{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "f041d60e",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## pandas 数据结构"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6ac59059",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "fe196582",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd # pandas是给予Numpy升级"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ec4668ab",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "###  Series一维数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "2786350b",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 3, 6, 9])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "0    1\n",
       "1    2\n",
       "2    3\n",
       "3    6\n",
       "4    9\n",
       "dtype: int32"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Series\n",
    "l = np.array([1,2,3,6,9])  # Numpy数组\n",
    "\n",
    "s1 = pd.Series(data = l)  # Series数组是一维数组\n",
    "display(l,s1)  #  Numpy数组和Series数组不一样：Series数组对了索引（默认从0开始）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "aa120ca6",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "a    1\n",
       "b    2\n",
       "c    3\n",
       "d    6\n",
       "e    9\n",
       "dtype: int32"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s2 = pd.Series(data = l,index = list('abcde'))  #  为Series数组制定index索引\n",
    "s2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "e55d4a20",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A    149\n",
       "B    130\n",
       "C    118\n",
       "D     99\n",
       "E     66\n",
       "dtype: int64"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s3 = pd.Series(data = {'A':149,'B':130,'C':118,'D':99,'E':66})\n",
    "s3"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9076bcb8",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### DataFrame二维数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "e980e554",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "#  Series数组是一维数组 Dataframe是二维数组\n",
    "# 多个Series共用索引，组成了Dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "117c6e8c",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>21.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>34.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>94.0</td>\n",
       "      <td>33.0</td>\n",
       "      <td>112.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>64.0</td>\n",
       "      <td>136.0</td>\n",
       "      <td>99.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>150.0</td>\n",
       "      <td>141.0</td>\n",
       "      <td>82.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>76.0</td>\n",
       "      <td>84.0</td>\n",
       "      <td>134.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>26.0</td>\n",
       "      <td>138.0</td>\n",
       "      <td>34.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>78.0</td>\n",
       "      <td>29.0</td>\n",
       "      <td>130.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>143.0</td>\n",
       "      <td>150.0</td>\n",
       "      <td>92.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>60.0</td>\n",
       "      <td>31.0</td>\n",
       "      <td>138.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>69.0</td>\n",
       "      <td>41.0</td>\n",
       "      <td>68.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>k</th>\n",
       "      <td>113.0</td>\n",
       "      <td>53.0</td>\n",
       "      <td>111.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python   Math     En\n",
       "A    21.0   15.0   34.0\n",
       "B    94.0   33.0  112.0\n",
       "C    64.0  136.0   99.0\n",
       "D   150.0  141.0   82.0\n",
       "E    76.0   84.0  134.0\n",
       "F    26.0  138.0   34.0\n",
       "G    78.0   29.0  130.0\n",
       "H   143.0  150.0   92.0\n",
       "I    60.0   31.0  138.0\n",
       "J    69.0   41.0   68.0\n",
       "k   113.0   53.0  111.0"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 创建DataFrame数组\n",
    "df1 = pd.DataFrame(data = np.random.randint(0,151,size = (11,3)),\n",
    "                                    index = list('ABCDEFGHIJk'),    # index代表行索引\n",
    "                                    columns=['Python','Math','En'],dtype=np.float16) # columns代表列索引\n",
    "df1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "5c9e99d3",
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>66.0</td>\n",
       "      <td>88.0</td>\n",
       "      <td>100.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>99.0</td>\n",
       "      <td>65.0</td>\n",
       "      <td>121.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>128.0</td>\n",
       "      <td>137.0</td>\n",
       "      <td>45.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python   Math     En\n",
       "0    66.0   88.0  100.0\n",
       "1    99.0   65.0  121.0\n",
       "2   128.0  137.0   45.0"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 创建DataFrame数组\n",
    "df2 = pd.DataFrame(data= {'Python':[66.,99,128],'Math':[88,65,137],'En':[100,121,45]},dtype= np.float16)\n",
    "df2  # 如果给字典，Key作为列索引，不指定index默认从0开始索引。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0894a789",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "b1155327",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据查看"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e44c5b86",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>19</td>\n",
       "      <td>93</td>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>60</td>\n",
       "      <td>145</td>\n",
       "      <td>89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5</td>\n",
       "      <td>59</td>\n",
       "      <td>124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>42</td>\n",
       "      <td>97</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>38</td>\n",
       "      <td>48</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>129</td>\n",
       "      <td>95</td>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>85</td>\n",
       "      <td>32</td>\n",
       "      <td>107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>26</td>\n",
       "      <td>68</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>112</td>\n",
       "      <td>131</td>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>96</td>\n",
       "      <td>142</td>\n",
       "      <td>116</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    Python  Math   En\n",
       "0       19    93   81\n",
       "1       60   145   89\n",
       "2        5    59  124\n",
       "3       42    97    1\n",
       "4       38    48  128\n",
       "..     ...   ...  ...\n",
       "95     129    95   36\n",
       "96      85    32  107\n",
       "97      26    68  108\n",
       "98     112   131   27\n",
       "99      96   142  116\n",
       "\n",
       "[100 rows x 3 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(data = np.random.randint(0,151,size = (100,3)),\n",
    "                                 columns=['Python','Math','En'])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "8028eede",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 3)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.shape  #  shape 查看形状"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "59838781",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>19</td>\n",
       "      <td>93</td>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>60</td>\n",
       "      <td>145</td>\n",
       "      <td>89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5</td>\n",
       "      <td>59</td>\n",
       "      <td>124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>42</td>\n",
       "      <td>97</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>38</td>\n",
       "      <td>48</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "0      19    93   81\n",
       "1      60   145   89\n",
       "2       5    59  124\n",
       "3      42    97    1\n",
       "4      38    48  128"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head() # head()显示前N行，默认5行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "61ffca60",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>129</td>\n",
       "      <td>95</td>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>85</td>\n",
       "      <td>32</td>\n",
       "      <td>107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>26</td>\n",
       "      <td>68</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>112</td>\n",
       "      <td>131</td>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>96</td>\n",
       "      <td>142</td>\n",
       "      <td>116</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Python  Math   En\n",
       "95     129    95   36\n",
       "96      85    32  107\n",
       "97      26    68  108\n",
       "98     112   131   27\n",
       "99      96   142  116"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.tail()  # tail显示后N个"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "99ef2fd4",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python    int32\n",
       "Math      int32\n",
       "En        int32\n",
       "dtype: object"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.dtypes  #  数据类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "c25c9cc0",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<bound method DataFrame.info of     Python  Math   En\n",
       "0       19    93   81\n",
       "1       60   145   89\n",
       "2        5    59  124\n",
       "3       42    97    1\n",
       "4       38    48  128\n",
       "..     ...   ...  ...\n",
       "95     129    95   36\n",
       "96      85    32  107\n",
       "97      26    68  108\n",
       "98     112   131   27\n",
       "99      96   142  116\n",
       "\n",
       "[100 rows x 3 columns]>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.info  #  info 显示详细信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "1adcd734",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>100.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>71.020000</td>\n",
       "      <td>76.440000</td>\n",
       "      <td>69.700000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>43.120686</td>\n",
       "      <td>43.704545</td>\n",
       "      <td>44.330599</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>36.750000</td>\n",
       "      <td>39.750000</td>\n",
       "      <td>29.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>66.500000</td>\n",
       "      <td>75.000000</td>\n",
       "      <td>67.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>101.000000</td>\n",
       "      <td>118.000000</td>\n",
       "      <td>107.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>150.000000</td>\n",
       "      <td>149.000000</td>\n",
       "      <td>150.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Python        Math          En\n",
       "count  100.000000  100.000000  100.000000\n",
       "mean    71.020000   76.440000   69.700000\n",
       "std     43.120686   43.704545   44.330599\n",
       "min      0.000000    0.000000    0.000000\n",
       "25%     36.750000   39.750000   29.500000\n",
       "50%     66.500000   75.000000   67.500000\n",
       "75%    101.000000  118.000000  107.250000\n",
       "max    150.000000  149.000000  150.000000"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()  #  描述：平均值、标准差、50%=中位数、25%=四等分、75%=四分之一三等分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "2fc3f276",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 19,  93,  81],\n",
       "       [ 60, 145,  89],\n",
       "       [  5,  59, 124],\n",
       "       [ 42,  97,   1],\n",
       "       [ 38,  48, 128],\n",
       "       [ 67,  53, 120],\n",
       "       [ 63, 149,   0],\n",
       "       [ 91, 132, 137],\n",
       "       [137,  29,  32],\n",
       "       [118,  77,  54],\n",
       "       [ 63,  72, 145],\n",
       "       [ 60,  24,  65],\n",
       "       [112,  61,  22],\n",
       "       [ 89,  83, 100],\n",
       "       [ 63, 119,  21],\n",
       "       [117,  47,  64],\n",
       "       [ 78, 125,  11],\n",
       "       [ 96,  63,  20],\n",
       "       [ 37,  25, 109],\n",
       "       [ 80, 101,  20],\n",
       "       [131,  53,   6],\n",
       "       [100, 104,  65],\n",
       "       [ 37,  30,  96],\n",
       "       [ 33,  60,  57],\n",
       "       [  6,  80,  21],\n",
       "       [ 46, 142, 142],\n",
       "       [ 22,  50,  22],\n",
       "       [150, 122,   6],\n",
       "       [ 93,  25, 142],\n",
       "       [ 94, 142, 149],\n",
       "       [  4, 143,  45],\n",
       "       [132,  25, 126],\n",
       "       [ 46,  94,  34],\n",
       "       [ 24, 126,  53],\n",
       "       [  5,   7, 104],\n",
       "       [ 93, 145,  16],\n",
       "       [ 66,  99,  97],\n",
       "       [ 95,   2,  18],\n",
       "       [145,  39,  72],\n",
       "       [ 47,  75,  44],\n",
       "       [ 12, 101,  59],\n",
       "       [145, 124,  84],\n",
       "       [ 99, 115,  56],\n",
       "       [114, 118,  18],\n",
       "       [ 18, 139, 140],\n",
       "       [ 11,  34,   7],\n",
       "       [ 28, 145,  98],\n",
       "       [118,  28, 110],\n",
       "       [127, 118, 101],\n",
       "       [  1,  16, 128],\n",
       "       [ 38,  59, 138],\n",
       "       [ 82,  81, 134],\n",
       "       [148,  13,   2],\n",
       "       [ 53,  86,  20],\n",
       "       [115,  53, 112],\n",
       "       [  0,  55,  94],\n",
       "       [123,  37,  58],\n",
       "       [ 66,  40,  69],\n",
       "       [ 15,  64,  39],\n",
       "       [ 86, 107, 111],\n",
       "       [ 18,  62,  67],\n",
       "       [ 40, 119,   0],\n",
       "       [ 62,   3,  74],\n",
       "       [ 22,  38, 123],\n",
       "       [ 20,   7, 113],\n",
       "       [ 49, 113,   0],\n",
       "       [  1,  60,  95],\n",
       "       [ 73,  16,  30],\n",
       "       [ 73, 138,  34],\n",
       "       [146, 127,  87],\n",
       "       [ 83,   0,  68],\n",
       "       [132,  75, 132],\n",
       "       [ 65, 122, 150],\n",
       "       [113,  70,  45],\n",
       "       [ 99,  83,  71],\n",
       "       [ 96,  21,  60],\n",
       "       [ 27,  65,  81],\n",
       "       [ 36,  78,  73],\n",
       "       [100,   8,  51],\n",
       "       [ 77,  40,  42],\n",
       "       [ 60,  77, 134],\n",
       "       [ 57, 116,  99],\n",
       "       [  8, 127,  78],\n",
       "       [109,   7, 119],\n",
       "       [ 44,  26,   2],\n",
       "       [144, 102,   5],\n",
       "       [ 62, 113,  44],\n",
       "       [ 99, 127,  14],\n",
       "       [137, 129,  28],\n",
       "       [ 32, 133,  27],\n",
       "       [101,  45, 102],\n",
       "       [ 46, 103,  99],\n",
       "       [  1,   3,  55],\n",
       "       [101,  60,  80],\n",
       "       [118,  65,  58],\n",
       "       [129,  95,  36],\n",
       "       [ 85,  32, 107],\n",
       "       [ 26,  68, 108],\n",
       "       [112, 131,  27],\n",
       "       [ 96, 142, 116]])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.values  #  values返回NumPy数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "37a8e9dc",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Python', 'Math', 'En'], dtype='object')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.columns  #  查看列索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "36de3b91",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RangeIndex(start=0, stop=100, step=1)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.index # 查看行索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "88259d24",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "bc07e379",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据输入与输出"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1f9dd193",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### csv"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "2c11edd4",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>97</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>80</td>\n",
       "      <td>140</td>\n",
       "      <td>139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>106</td>\n",
       "      <td>109</td>\n",
       "      <td>89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>36</td>\n",
       "      <td>68</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>47</td>\n",
       "      <td>71</td>\n",
       "      <td>135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>59</td>\n",
       "      <td>20</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>123</td>\n",
       "      <td>82</td>\n",
       "      <td>120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>109</td>\n",
       "      <td>27</td>\n",
       "      <td>127</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>148</td>\n",
       "      <td>43</td>\n",
       "      <td>124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>11</td>\n",
       "      <td>5</td>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    Python  Math   En\n",
       "0       97    11   13\n",
       "1       80   140  139\n",
       "2      106   109   89\n",
       "3       36    68  149\n",
       "4       47    71  135\n",
       "..     ...   ...  ...\n",
       "95      59    20   45\n",
       "96     123    82  120\n",
       "97     109    27  127\n",
       "98     148    43  124\n",
       "99      11     5   34\n",
       "\n",
       "[100 rows x 3 columns]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(data = np.random.randint(0,151,size = (100,3)),\n",
    "                                 columns=['Python','Math','En'])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "34b50f14",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "#  保存为CSV文件，CSV是使用逗号分割的。\n",
    "df.to_csv('./data.csv',sep = ',', \n",
    "                  index= True,   #  保存行索引\n",
    "                 header= True)  #  保存列索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "3bb15b49",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "#  保存为CSV文件，CSV是使用逗号分割的。\n",
    "df.to_csv('./data2.csv',sep = ',', \n",
    "                  index= False,   #  不保存行索引\n",
    "                 header= False)  #  不保存列索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "6ec13455",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>97</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>80</td>\n",
       "      <td>140</td>\n",
       "      <td>139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>106</td>\n",
       "      <td>109</td>\n",
       "      <td>89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>36</td>\n",
       "      <td>68</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>47</td>\n",
       "      <td>71</td>\n",
       "      <td>135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>59</td>\n",
       "      <td>20</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>123</td>\n",
       "      <td>82</td>\n",
       "      <td>120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>109</td>\n",
       "      <td>27</td>\n",
       "      <td>127</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>148</td>\n",
       "      <td>43</td>\n",
       "      <td>124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>11</td>\n",
       "      <td>5</td>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    Python  Math   En\n",
       "0       97    11   13\n",
       "1       80   140  139\n",
       "2      106   109   89\n",
       "3       36    68  149\n",
       "4       47    71  135\n",
       "..     ...   ...  ...\n",
       "95      59    20   45\n",
       "96     123    82  120\n",
       "97     109    27  127\n",
       "98     148    43  124\n",
       "99      11     5   34\n",
       "\n",
       "[100 rows x 3 columns]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.read_csv('./data.csv',   #  read_csv读取CSV文件（如果数据本身有行索引可加上index_col参数）\n",
    "            index_col=0)   #   index_col=0 第一列作为行索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "313c73b3",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>97</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>80</td>\n",
       "      <td>140</td>\n",
       "      <td>139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>106</td>\n",
       "      <td>109</td>\n",
       "      <td>89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>36</td>\n",
       "      <td>68</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>47</td>\n",
       "      <td>71</td>\n",
       "      <td>135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>59</td>\n",
       "      <td>20</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>123</td>\n",
       "      <td>82</td>\n",
       "      <td>120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>109</td>\n",
       "      <td>27</td>\n",
       "      <td>127</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>148</td>\n",
       "      <td>43</td>\n",
       "      <td>124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>11</td>\n",
       "      <td>5</td>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      0    1    2\n",
       "0    97   11   13\n",
       "1    80  140  139\n",
       "2   106  109   89\n",
       "3    36   68  149\n",
       "4    47   71  135\n",
       "..  ...  ...  ...\n",
       "95   59   20   45\n",
       "96  123   82  120\n",
       "97  109   27  127\n",
       "98  148   43  124\n",
       "99   11    5   34\n",
       "\n",
       "[100 rows x 3 columns]"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.read_csv('./data2.csv',header= None)  #  如果数据本身没有行列索引，默认会将数据首行作为行索引（加上header= None添加行索引）"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "69a5bb9f",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### Excel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "fc98aa05",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>97</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>80</td>\n",
       "      <td>140</td>\n",
       "      <td>139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>106</td>\n",
       "      <td>109</td>\n",
       "      <td>89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>36</td>\n",
       "      <td>68</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>47</td>\n",
       "      <td>71</td>\n",
       "      <td>135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>59</td>\n",
       "      <td>20</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>123</td>\n",
       "      <td>82</td>\n",
       "      <td>120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>109</td>\n",
       "      <td>27</td>\n",
       "      <td>127</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>148</td>\n",
       "      <td>43</td>\n",
       "      <td>124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>11</td>\n",
       "      <td>5</td>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    Python  Math   En\n",
       "0       97    11   13\n",
       "1       80   140  139\n",
       "2      106   109   89\n",
       "3       36    68  149\n",
       "4       47    71  135\n",
       "..     ...   ...  ...\n",
       "95      59    20   45\n",
       "96     123    82  120\n",
       "97     109    27  127\n",
       "98     148    43  124\n",
       "99      11     5   34\n",
       "\n",
       "[100 rows x 3 columns]"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "56c55609",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Guowei\\AppData\\Local\\Temp/ipykernel_17392/415547589.py:1: FutureWarning: As the xlwt package is no longer maintained, the xlwt engine will be removed in a future version of pandas. This is the only engine in pandas that supports writing in the xls format. Install openpyxl and write to an xlsx file instead. You can set the option io.excel.xls.writer to 'xlwt' to silence this warning. While this option is deprecated and will also raise a warning, it can be globally set and the warning suppressed.\n",
      "  df.to_excel('./data.xls')\n"
     ]
    }
   ],
   "source": [
    "df.to_excel('./data.xls')  #  保存Excel文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "58ed56bf",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>97</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>80</td>\n",
       "      <td>140</td>\n",
       "      <td>139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>106</td>\n",
       "      <td>109</td>\n",
       "      <td>89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>36</td>\n",
       "      <td>68</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>47</td>\n",
       "      <td>71</td>\n",
       "      <td>135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>59</td>\n",
       "      <td>20</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>123</td>\n",
       "      <td>82</td>\n",
       "      <td>120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>109</td>\n",
       "      <td>27</td>\n",
       "      <td>127</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>148</td>\n",
       "      <td>43</td>\n",
       "      <td>124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>11</td>\n",
       "      <td>5</td>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    Python  Math   En\n",
       "0       97    11   13\n",
       "1       80   140  139\n",
       "2      106   109   89\n",
       "3       36    68  149\n",
       "4       47    71  135\n",
       "..     ...   ...  ...\n",
       "95      59    20   45\n",
       "96     123    82  120\n",
       "97     109    27  127\n",
       "98     148    43  124\n",
       "99      11     5   34\n",
       "\n",
       "[100 rows x 3 columns]"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.read_excel('./data.xls',   #  读取excel\n",
    "                      index_col=0)   #  第一列作为行索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4a2c9102",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "240ddf07",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### HDF5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b6da2952",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "dbd3d068",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "ename": "ImportError",
     "evalue": "Missing optional dependency 'tables'.  Use pip or conda to install tables.",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mImportError\u001b[0m                               Traceback (most recent call last)",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_17392/619478458.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto_hdf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'./data.h5'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mkey\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'score'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32mG:\\Program Files\\Python39\\lib\\site-packages\\pandas\\core\\generic.py\u001b[0m in \u001b[0;36mto_hdf\u001b[1;34m(self, path_or_buf, key, mode, complevel, complib, append, format, index, min_itemsize, nan_rep, dropna, data_columns, errors, encoding)\u001b[0m\n\u001b[0;32m   2701\u001b[0m         \u001b[1;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mio\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mpytables\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2702\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2703\u001b[1;33m         pytables.to_hdf(\n\u001b[0m\u001b[0;32m   2704\u001b[0m             \u001b[0mpath_or_buf\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2705\u001b[0m             \u001b[0mkey\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mG:\\Program Files\\Python39\\lib\\site-packages\\pandas\\io\\pytables.py\u001b[0m in \u001b[0;36mto_hdf\u001b[1;34m(path_or_buf, key, value, mode, complevel, complib, append, format, index, min_itemsize, nan_rep, dropna, data_columns, errors, encoding)\u001b[0m\n\u001b[0;32m    309\u001b[0m     \u001b[0mpath_or_buf\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mstringify_path\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpath_or_buf\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    310\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpath_or_buf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 311\u001b[1;33m         with HDFStore(\n\u001b[0m\u001b[0;32m    312\u001b[0m             \u001b[0mpath_or_buf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmode\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmode\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcomplevel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcomplevel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcomplib\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcomplib\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    313\u001b[0m         ) as store:\n",
      "\u001b[1;32mG:\\Program Files\\Python39\\lib\\site-packages\\pandas\\io\\pytables.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, path, mode, complevel, complib, fletcher32, **kwargs)\u001b[0m\n\u001b[0;32m    570\u001b[0m             \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"format is not a defined argument for HDFStore\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    571\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 572\u001b[1;33m         \u001b[0mtables\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mimport_optional_dependency\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"tables\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    573\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    574\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mcomplib\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mcomplib\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mtables\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfilters\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mall_complibs\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mG:\\Program Files\\Python39\\lib\\site-packages\\pandas\\compat\\_optional.py\u001b[0m in \u001b[0;36mimport_optional_dependency\u001b[1;34m(name, extra, errors, min_version)\u001b[0m\n\u001b[0;32m    116\u001b[0m     \u001b[1;32mexcept\u001b[0m \u001b[0mImportError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    117\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0merrors\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m\"raise\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 118\u001b[1;33m             \u001b[1;32mraise\u001b[0m \u001b[0mImportError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    119\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    120\u001b[0m             \u001b[1;32mreturn\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mImportError\u001b[0m: Missing optional dependency 'tables'.  Use pip or conda to install tables."
     ]
    }
   ],
   "source": [
    "df.to_hdf('./data.h5',key = 'score')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7aeb68b1",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### SQL"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "c905c16b",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "from sqlalchemy import create_engine # 数据库引擎，构建数据库的链接"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "fd2f4ee4",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "# PyMySQL\n",
    "engine = create_engine('mysql+pymysql://root:123123@localhost/pandas?charset=utf8')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "ceb4fd0e",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "df.to_sql('salary',engine,index=False) #   将Python数据DataFrame存储在mysql中"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "7af61d24",
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>97</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>80</td>\n",
       "      <td>140</td>\n",
       "      <td>139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>106</td>\n",
       "      <td>109</td>\n",
       "      <td>89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>36</td>\n",
       "      <td>68</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>47</td>\n",
       "      <td>71</td>\n",
       "      <td>135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>114</td>\n",
       "      <td>103</td>\n",
       "      <td>147</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>112</td>\n",
       "      <td>5</td>\n",
       "      <td>129</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>150</td>\n",
       "      <td>111</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>149</td>\n",
       "      <td>69</td>\n",
       "      <td>47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>131</td>\n",
       "      <td>80</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>6</td>\n",
       "      <td>48</td>\n",
       "      <td>37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>142</td>\n",
       "      <td>63</td>\n",
       "      <td>95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>64</td>\n",
       "      <td>104</td>\n",
       "      <td>114</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>146</td>\n",
       "      <td>55</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>24</td>\n",
       "      <td>82</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>71</td>\n",
       "      <td>72</td>\n",
       "      <td>95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>136</td>\n",
       "      <td>149</td>\n",
       "      <td>145</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>83</td>\n",
       "      <td>61</td>\n",
       "      <td>131</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>59</td>\n",
       "      <td>90</td>\n",
       "      <td>38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>47</td>\n",
       "      <td>6</td>\n",
       "      <td>59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>28</td>\n",
       "      <td>9</td>\n",
       "      <td>91</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>132</td>\n",
       "      <td>92</td>\n",
       "      <td>112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>11</td>\n",
       "      <td>66</td>\n",
       "      <td>64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>3</td>\n",
       "      <td>103</td>\n",
       "      <td>61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>44</td>\n",
       "      <td>40</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>38</td>\n",
       "      <td>90</td>\n",
       "      <td>77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>4</td>\n",
       "      <td>21</td>\n",
       "      <td>37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>109</td>\n",
       "      <td>65</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>62</td>\n",
       "      <td>105</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>116</td>\n",
       "      <td>27</td>\n",
       "      <td>87</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>46</td>\n",
       "      <td>74</td>\n",
       "      <td>58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>73</td>\n",
       "      <td>109</td>\n",
       "      <td>77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>70</td>\n",
       "      <td>6</td>\n",
       "      <td>72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>62</td>\n",
       "      <td>61</td>\n",
       "      <td>80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>31</td>\n",
       "      <td>21</td>\n",
       "      <td>96</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>106</td>\n",
       "      <td>80</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>1</td>\n",
       "      <td>84</td>\n",
       "      <td>139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>37</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>117</td>\n",
       "      <td>81</td>\n",
       "      <td>38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>20</td>\n",
       "      <td>108</td>\n",
       "      <td>79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>105</td>\n",
       "      <td>67</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>71</td>\n",
       "      <td>147</td>\n",
       "      <td>76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>56</td>\n",
       "      <td>67</td>\n",
       "      <td>136</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>11</td>\n",
       "      <td>79</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>102</td>\n",
       "      <td>69</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>96</td>\n",
       "      <td>81</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>91</td>\n",
       "      <td>43</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>119</td>\n",
       "      <td>48</td>\n",
       "      <td>83</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>61</td>\n",
       "      <td>28</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>2</td>\n",
       "      <td>52</td>\n",
       "      <td>37</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Python  Math   En\n",
       "0       97    11   13\n",
       "1       80   140  139\n",
       "2      106   109   89\n",
       "3       36    68  149\n",
       "4       47    71  135\n",
       "5      114   103  147\n",
       "6      112     5  129\n",
       "7      150   111   67\n",
       "8      149    69   47\n",
       "9      131    80    2\n",
       "10       6    48   37\n",
       "11     142    63   95\n",
       "12      64   104  114\n",
       "13     146    55   22\n",
       "14      24    82   84\n",
       "15      71    72   95\n",
       "16     136   149  145\n",
       "17      83    61  131\n",
       "18      59    90   38\n",
       "19      47     6   59\n",
       "20      28     9   91\n",
       "21     132    92  112\n",
       "22      11    66   64\n",
       "23       3   103   61\n",
       "24      44    40   70\n",
       "25      38    90   77\n",
       "26       4    21   37\n",
       "27     109    65   14\n",
       "28      62   105    8\n",
       "29     116    27   87\n",
       "30      46    74   58\n",
       "31      73   109   77\n",
       "32      70     6   72\n",
       "33      62    61   80\n",
       "34      31    21   96\n",
       "35     106    80   24\n",
       "36       1    84  139\n",
       "37      37     4    9\n",
       "38     117    81   38\n",
       "39      20   108   79\n",
       "40     105    67   70\n",
       "41      71   147   76\n",
       "42      56    67  136\n",
       "43      11    79   11\n",
       "44     102    69  128\n",
       "45      96    81  149\n",
       "46      91    43    5\n",
       "47     119    48   83\n",
       "48      61    28   15\n",
       "49       2    52   37"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df3 = pd.read_sql('select * from salary limit 50',con = engine)\n",
    "df3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5d43c5b0",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "f898cc3a",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据选取"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7707db75",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 数据获取（列索引）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4e5e68ec",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>6</td>\n",
       "      <td>81</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1</td>\n",
       "      <td>96</td>\n",
       "      <td>104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>117</td>\n",
       "      <td>140</td>\n",
       "      <td>126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>148</td>\n",
       "      <td>8</td>\n",
       "      <td>134</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>134</td>\n",
       "      <td>43</td>\n",
       "      <td>56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>130</td>\n",
       "      <td>80</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>47</td>\n",
       "      <td>98</td>\n",
       "      <td>57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>33</td>\n",
       "      <td>6</td>\n",
       "      <td>142</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>16</td>\n",
       "      <td>143</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>4</td>\n",
       "      <td>140</td>\n",
       "      <td>99</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "A       6    81   18\n",
       "B       1    96  104\n",
       "C     117   140  126\n",
       "D     148     8  134\n",
       "E     134    43   56\n",
       "F     130    80   50\n",
       "H      47    98   57\n",
       "I      33     6  142\n",
       "J      16   143   75\n",
       "K       4   140   99"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(np.random.randint(0,151,size = (10,3)),\n",
    "                                 index = list('ABCDEFHIJK'),columns=['Python','Math','En'])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "2898e3e1",
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A      6\n",
       "B      1\n",
       "C    117\n",
       "D    148\n",
       "E    134\n",
       "F    130\n",
       "H     47\n",
       "I     33\n",
       "J     16\n",
       "K      4\n",
       "Name: Python, dtype: int32"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  DataFrame中索引列，表示属性\n",
    "df['Python']   # 获取指定列数据\n",
    "df.Python     # 获取指定列数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "9f740b6b",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>En</th>\n",
       "      <th>Math</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>6</td>\n",
       "      <td>18</td>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1</td>\n",
       "      <td>104</td>\n",
       "      <td>96</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>117</td>\n",
       "      <td>126</td>\n",
       "      <td>140</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>148</td>\n",
       "      <td>134</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>134</td>\n",
       "      <td>56</td>\n",
       "      <td>43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>130</td>\n",
       "      <td>50</td>\n",
       "      <td>80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>47</td>\n",
       "      <td>57</td>\n",
       "      <td>98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>33</td>\n",
       "      <td>142</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>16</td>\n",
       "      <td>75</td>\n",
       "      <td>143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>4</td>\n",
       "      <td>99</td>\n",
       "      <td>140</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python   En  Math\n",
       "A       6   18    81\n",
       "B       1  104    96\n",
       "C     117  126   140\n",
       "D     148  134     8\n",
       "E     134   56    43\n",
       "F     130   50    80\n",
       "H      47   57    98\n",
       "I      33  142     6\n",
       "J      16   75   143\n",
       "K       4   99   140"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[['Python','En','Math']]  # 获取指定多列数据"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ccf32e9d",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 标签选择（行索引）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "bca7e7af",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python     6\n",
       "Math      81\n",
       "En        18\n",
       "Name: A, dtype: int32"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  标签就是行索引\n",
    "df.loc['A']  #  获取指定行   loc = location位置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "ca8232ef",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>6</td>\n",
       "      <td>81</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1</td>\n",
       "      <td>96</td>\n",
       "      <td>104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>4</td>\n",
       "      <td>140</td>\n",
       "      <td>99</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "A       6    81   18\n",
       "B       1    96  104\n",
       "K       4   140   99"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc[['A','B','K']]  #  两个中括号表示：获取指定多个行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "569d52b4",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc['A','Python']  # 一个中括号+逗号表示获取指定行，指定列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "2af4e953",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A      6\n",
       "B      1\n",
       "F    130\n",
       "Name: Python, dtype: int32"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc[['A','B','F'],'Python']  #  获取多个指定行，指定列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "fd3c84b4",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>96</td>\n",
       "      <td>104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>147</td>\n",
       "      <td>234</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>80</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>60</td>\n",
       "      <td>142</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>140</td>\n",
       "      <td>199</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Math   En\n",
       "B    96  104\n",
       "D   147  234\n",
       "F    80   60\n",
       "I    60  142\n",
       "K   140  199"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc['B'::2,['Math','En']]  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "3e620ef1",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>6</td>\n",
       "      <td>81</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1</td>\n",
       "      <td>96</td>\n",
       "      <td>104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>117</td>\n",
       "      <td>140</td>\n",
       "      <td>126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>148</td>\n",
       "      <td>8</td>\n",
       "      <td>134</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "A       6    81   18\n",
       "B       1    96  104\n",
       "C     117   140  126\n",
       "D     148     8  134"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc['A':'D',:]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "92911b8f",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 位置选择  (切片行索引)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "75e8a40c",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python    150\n",
       "Math       81\n",
       "En         60\n",
       "Java       75\n",
       "Name: A, dtype: int32"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "cd58ddfa",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>6</td>\n",
       "      <td>81</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>117</td>\n",
       "      <td>140</td>\n",
       "      <td>126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>134</td>\n",
       "      <td>43</td>\n",
       "      <td>56</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "A       6    81   18\n",
       "C     117   140  126\n",
       "E     134    43   56"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[[0,2,4]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "ea85fe70",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>6</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1</td>\n",
       "      <td>104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>117</td>\n",
       "      <td>126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>148</td>\n",
       "      <td>134</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python   En\n",
       "A       6   18\n",
       "B       1  104\n",
       "C     117  126\n",
       "D     148  134"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[0:4,[0,2]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "96120482",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>148</td>\n",
       "      <td>8</td>\n",
       "      <td>134</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>130</td>\n",
       "      <td>80</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>33</td>\n",
       "      <td>6</td>\n",
       "      <td>142</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "D     148     8  134\n",
       "F     130    80   50\n",
       "I      33     6  142"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[3:8:2]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4222fff0",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### boolenan索引  （条件索引）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "fc0a0070",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "      <th>Java</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>150</td>\n",
       "      <td>81</td>\n",
       "      <td>60</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>117</td>\n",
       "      <td>147</td>\n",
       "      <td>126</td>\n",
       "      <td>135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>248</td>\n",
       "      <td>147</td>\n",
       "      <td>234</td>\n",
       "      <td>112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>134</td>\n",
       "      <td>147</td>\n",
       "      <td>60</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>130</td>\n",
       "      <td>80</td>\n",
       "      <td>60</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>160</td>\n",
       "      <td>98</td>\n",
       "      <td>160</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>160</td>\n",
       "      <td>140</td>\n",
       "      <td>199</td>\n",
       "      <td>83</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En  Java\n",
       "A     150    81   60    75\n",
       "C     117   147  126   135\n",
       "D     248   147  234   112\n",
       "E     134   147   60    60\n",
       "F     130    80   60    70\n",
       "H     160    98  160    60\n",
       "K     160   140  199    83"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cond = df.Python > 80  #  将Python大于80分获取\n",
    "df[cond]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "8f15d352",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "      <th>Java</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>150</td>\n",
       "      <td>81</td>\n",
       "      <td>60</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>60</td>\n",
       "      <td>96</td>\n",
       "      <td>104</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>117</td>\n",
       "      <td>147</td>\n",
       "      <td>126</td>\n",
       "      <td>135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>248</td>\n",
       "      <td>147</td>\n",
       "      <td>234</td>\n",
       "      <td>112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>134</td>\n",
       "      <td>147</td>\n",
       "      <td>60</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>130</td>\n",
       "      <td>80</td>\n",
       "      <td>60</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>160</td>\n",
       "      <td>98</td>\n",
       "      <td>160</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>60</td>\n",
       "      <td>60</td>\n",
       "      <td>142</td>\n",
       "      <td>95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>60</td>\n",
       "      <td>143</td>\n",
       "      <td>75</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>160</td>\n",
       "      <td>140</td>\n",
       "      <td>199</td>\n",
       "      <td>83</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En  Java\n",
       "A     150    81   60    75\n",
       "B      60    96  104    60\n",
       "C     117   147  126   135\n",
       "D     248   147  234   112\n",
       "E     134   147   60    60\n",
       "F     130    80   60    70\n",
       "H     160    98  160    60\n",
       "I      60    60  142    95\n",
       "J      60   143   75    67\n",
       "K     160   140  199    83"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cond = df.mean(axis = 1)  > 75  #  平均分大于75，优秀，筛选出这些人 （xis:轴 = 0 表示行  = 1 表示列）\n",
    "df[cond]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "e1cd0509",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>117</td>\n",
       "      <td>140</td>\n",
       "      <td>126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>130</td>\n",
       "      <td>80</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "C     117   140  126\n",
       "F     130    80   50"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cond = (df.Python > 70)  &  (df.Math > 70)  #  多条件筛选\n",
    "df[cond]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "9c735649",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "      <th>Java</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>117</td>\n",
       "      <td>147</td>\n",
       "      <td>126</td>\n",
       "      <td>135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>134</td>\n",
       "      <td>147</td>\n",
       "      <td>60</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>160</td>\n",
       "      <td>140</td>\n",
       "      <td>199</td>\n",
       "      <td>83</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En  Java\n",
       "C     117   147  126   135\n",
       "E     134   147   60    60\n",
       "K     160   140  199    83"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cond = df.index.isin(['C','E','K'])  #  isin判断数据是否在数组中，如果在返回True否则返回False\n",
    "df[cond]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eba55130",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 赋值操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "436d4042",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>150</td>\n",
       "      <td>81</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1</td>\n",
       "      <td>96</td>\n",
       "      <td>104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>117</td>\n",
       "      <td>140</td>\n",
       "      <td>126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>148</td>\n",
       "      <td>8</td>\n",
       "      <td>134</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>134</td>\n",
       "      <td>43</td>\n",
       "      <td>56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>130</td>\n",
       "      <td>80</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>47</td>\n",
       "      <td>98</td>\n",
       "      <td>57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>33</td>\n",
       "      <td>6</td>\n",
       "      <td>142</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>16</td>\n",
       "      <td>143</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>4</td>\n",
       "      <td>140</td>\n",
       "      <td>99</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "A     150    81   18\n",
       "B       1    96  104\n",
       "C     117   140  126\n",
       "D     148     8  134\n",
       "E     134    43   56\n",
       "F     130    80   50\n",
       "H      47    98   57\n",
       "I      33     6  142\n",
       "J      16   143   75\n",
       "K       4   140   99"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['Python']['A'] = 150  #  修改指定位置的值\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "0be955eb",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "      <th>Java</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>150</td>\n",
       "      <td>81</td>\n",
       "      <td>18</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1</td>\n",
       "      <td>96</td>\n",
       "      <td>104</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>117</td>\n",
       "      <td>140</td>\n",
       "      <td>126</td>\n",
       "      <td>135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>148</td>\n",
       "      <td>8</td>\n",
       "      <td>134</td>\n",
       "      <td>112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>134</td>\n",
       "      <td>43</td>\n",
       "      <td>56</td>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>130</td>\n",
       "      <td>80</td>\n",
       "      <td>50</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>47</td>\n",
       "      <td>98</td>\n",
       "      <td>57</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>33</td>\n",
       "      <td>6</td>\n",
       "      <td>142</td>\n",
       "      <td>95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>16</td>\n",
       "      <td>143</td>\n",
       "      <td>75</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>4</td>\n",
       "      <td>140</td>\n",
       "      <td>99</td>\n",
       "      <td>83</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En  Java\n",
       "A     150    81   18    75\n",
       "B       1    96  104     9\n",
       "C     117   140  126   135\n",
       "D     148     8  134   112\n",
       "E     134    43   56    39\n",
       "F     130    80   50    70\n",
       "H      47    98   57     7\n",
       "I      33     6  142    95\n",
       "J      16   143   75    67\n",
       "K       4   140   99    83"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['Java'] = np.random.randint(0,150,size = 10)  #  新增列\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "35fe35f0",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "      <th>Java</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>150</td>\n",
       "      <td>81</td>\n",
       "      <td>18</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1</td>\n",
       "      <td>96</td>\n",
       "      <td>104</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>117</td>\n",
       "      <td>147</td>\n",
       "      <td>126</td>\n",
       "      <td>135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>148</td>\n",
       "      <td>147</td>\n",
       "      <td>134</td>\n",
       "      <td>112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>134</td>\n",
       "      <td>147</td>\n",
       "      <td>56</td>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>130</td>\n",
       "      <td>80</td>\n",
       "      <td>50</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>47</td>\n",
       "      <td>98</td>\n",
       "      <td>57</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>33</td>\n",
       "      <td>6</td>\n",
       "      <td>142</td>\n",
       "      <td>95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>16</td>\n",
       "      <td>143</td>\n",
       "      <td>75</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>4</td>\n",
       "      <td>140</td>\n",
       "      <td>99</td>\n",
       "      <td>83</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En  Java\n",
       "A     150    81   18    75\n",
       "B       1    96  104     9\n",
       "C     117   147  126   135\n",
       "D     148   147  134   112\n",
       "E     134   147   56    39\n",
       "F     130    80   50    70\n",
       "H      47    98   57     7\n",
       "I      33     6  142    95\n",
       "J      16   143   75    67\n",
       "K       4   140   99    83"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc[['C','D','E'],'Math'] = 147  #  修改指定多个人的值\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "f0b1ff05",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "cond = df < 60   #  条件修改值，符合条件的就修改\n",
    "df[cond] = 60    #  条件修改值，符合条件的就修改"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "f4e91a15",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "      <th>Java</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>150</td>\n",
       "      <td>81</td>\n",
       "      <td>60</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>60</td>\n",
       "      <td>96</td>\n",
       "      <td>104</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>117</td>\n",
       "      <td>147</td>\n",
       "      <td>126</td>\n",
       "      <td>135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>148</td>\n",
       "      <td>147</td>\n",
       "      <td>134</td>\n",
       "      <td>112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>134</td>\n",
       "      <td>147</td>\n",
       "      <td>60</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>130</td>\n",
       "      <td>80</td>\n",
       "      <td>60</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>60</td>\n",
       "      <td>98</td>\n",
       "      <td>60</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>60</td>\n",
       "      <td>60</td>\n",
       "      <td>142</td>\n",
       "      <td>95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>60</td>\n",
       "      <td>143</td>\n",
       "      <td>75</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>60</td>\n",
       "      <td>140</td>\n",
       "      <td>99</td>\n",
       "      <td>83</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En  Java\n",
       "A     150    81   60    75\n",
       "B      60    96  104    60\n",
       "C     117   147  126   135\n",
       "D     148   147  134   112\n",
       "E     134   147   60    60\n",
       "F     130    80   60    70\n",
       "H      60    98   60    60\n",
       "I      60    60  142    95\n",
       "J      60   143   75    67\n",
       "K      60   140   99    83"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "8c957591",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "df.iloc[3::3,[0,2]]  += 100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "3c445bae",
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "      <th>Java</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>150</td>\n",
       "      <td>81</td>\n",
       "      <td>60</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>60</td>\n",
       "      <td>96</td>\n",
       "      <td>104</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>117</td>\n",
       "      <td>147</td>\n",
       "      <td>126</td>\n",
       "      <td>135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>248</td>\n",
       "      <td>147</td>\n",
       "      <td>234</td>\n",
       "      <td>112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>134</td>\n",
       "      <td>147</td>\n",
       "      <td>60</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>130</td>\n",
       "      <td>80</td>\n",
       "      <td>60</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>160</td>\n",
       "      <td>98</td>\n",
       "      <td>160</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>60</td>\n",
       "      <td>60</td>\n",
       "      <td>142</td>\n",
       "      <td>95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>60</td>\n",
       "      <td>143</td>\n",
       "      <td>75</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>160</td>\n",
       "      <td>140</td>\n",
       "      <td>199</td>\n",
       "      <td>83</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En  Java\n",
       "A     150    81   60    75\n",
       "B      60    96  104    60\n",
       "C     117   147  126   135\n",
       "D     248   147  234   112\n",
       "E     134   147   60    60\n",
       "F     130    80   60    70\n",
       "H     160    98  160    60\n",
       "I      60    60  142    95\n",
       "J      60   143   75    67\n",
       "K     160   140  199    83"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "35d9d586",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据集成"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "17269246",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### concat数据串联（数据合并）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "03cc3053",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "#  类似于np.concatenate Numpy数据集成\n",
    "df1 = pd.DataFrame(np.random.randint(0,151,size = (10,3)),\n",
    "                                  columns = ['Python','Math','En'],\n",
    "                                    index = list('ABCDEFHIJK'))\n",
    "\n",
    "df2 = pd.DataFrame(np.random.randint(0,151,size = (10,3)),\n",
    "                                  columns = ['Python','Math','En'],\n",
    "                                    index = list ('QWRTUYOPLM'))\n",
    "\n",
    "df3 = pd.DataFrame(np.random.randint(0,151,size = (10,2)),\n",
    "                                  columns = ['Java','Chinese'],\n",
    "                                    index = list('ABCDEFHIJK'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "dd480f44",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>88</td>\n",
       "      <td>61</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>125</td>\n",
       "      <td>56</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>80</td>\n",
       "      <td>87</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>128</td>\n",
       "      <td>122</td>\n",
       "      <td>97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>99</td>\n",
       "      <td>136</td>\n",
       "      <td>51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>41</td>\n",
       "      <td>111</td>\n",
       "      <td>140</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>17</td>\n",
       "      <td>66</td>\n",
       "      <td>31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>102</td>\n",
       "      <td>102</td>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>101</td>\n",
       "      <td>96</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>45</td>\n",
       "      <td>93</td>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>70</td>\n",
       "      <td>12</td>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>125</td>\n",
       "      <td>138</td>\n",
       "      <td>37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>18</td>\n",
       "      <td>99</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>5</td>\n",
       "      <td>27</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>45</td>\n",
       "      <td>86</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>18</td>\n",
       "      <td>93</td>\n",
       "      <td>77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>110</td>\n",
       "      <td>66</td>\n",
       "      <td>97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>51</td>\n",
       "      <td>75</td>\n",
       "      <td>90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>39</td>\n",
       "      <td>29</td>\n",
       "      <td>97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>M</th>\n",
       "      <td>99</td>\n",
       "      <td>56</td>\n",
       "      <td>42</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "A      88    61  128\n",
       "B     125    56    5\n",
       "C      80    87  128\n",
       "D     128   122   97\n",
       "E      99   136   51\n",
       "F      41   111  140\n",
       "H      17    66   31\n",
       "I     102   102   81\n",
       "J     101    96  100\n",
       "K      45    93   81\n",
       "Q      70    12   34\n",
       "W     125   138   37\n",
       "R      18    99  138\n",
       "T       5    27  108\n",
       "U      45    86   60\n",
       "Y      18    93   77\n",
       "O     110    66   97\n",
       "P      51    75   90\n",
       "L      39    29   97\n",
       "M      99    56   42"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat([df1,df2],axis = 0)  #  concat表示链接合并，axis默认情况下是0 行合并，行增加"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "08bf647e",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "      <th>Java</th>\n",
       "      <th>Chinese</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>88</td>\n",
       "      <td>61</td>\n",
       "      <td>128</td>\n",
       "      <td>109</td>\n",
       "      <td>69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>125</td>\n",
       "      <td>56</td>\n",
       "      <td>5</td>\n",
       "      <td>144</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>80</td>\n",
       "      <td>87</td>\n",
       "      <td>128</td>\n",
       "      <td>133</td>\n",
       "      <td>48</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>128</td>\n",
       "      <td>122</td>\n",
       "      <td>97</td>\n",
       "      <td>108</td>\n",
       "      <td>62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>99</td>\n",
       "      <td>136</td>\n",
       "      <td>51</td>\n",
       "      <td>59</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>41</td>\n",
       "      <td>111</td>\n",
       "      <td>140</td>\n",
       "      <td>76</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>17</td>\n",
       "      <td>66</td>\n",
       "      <td>31</td>\n",
       "      <td>147</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>102</td>\n",
       "      <td>102</td>\n",
       "      <td>81</td>\n",
       "      <td>9</td>\n",
       "      <td>117</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>101</td>\n",
       "      <td>96</td>\n",
       "      <td>100</td>\n",
       "      <td>89</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>45</td>\n",
       "      <td>93</td>\n",
       "      <td>81</td>\n",
       "      <td>13</td>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En  Java  Chinese\n",
       "A      88    61  128   109       69\n",
       "B     125    56    5   144       50\n",
       "C      80    87  128   133       48\n",
       "D     128   122   97   108       62\n",
       "E      99   136   51    59        2\n",
       "F      41   111  140    76       12\n",
       "H      17    66   31   147       10\n",
       "I     102   102   81     9      117\n",
       "J     101    96  100    89       26\n",
       "K      45    93   81    13       81"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat([df1,df3],axis = 1)  #  axis=1表示列增加"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "08fdc0ab",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "df1.append(df2)  #  方法二：append追加，在行的后面直接进行追加"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "97d3a986",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 数据插入（列）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "c989453c",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>88</td>\n",
       "      <td>61</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>125</td>\n",
       "      <td>56</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>80</td>\n",
       "      <td>87</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>128</td>\n",
       "      <td>122</td>\n",
       "      <td>97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>99</td>\n",
       "      <td>136</td>\n",
       "      <td>51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>41</td>\n",
       "      <td>111</td>\n",
       "      <td>140</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>17</td>\n",
       "      <td>66</td>\n",
       "      <td>31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>102</td>\n",
       "      <td>102</td>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>101</td>\n",
       "      <td>96</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>45</td>\n",
       "      <td>93</td>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "A      88    61  128\n",
       "B     125    56    5\n",
       "C      80    87  128\n",
       "D     128   122   97\n",
       "E      99   136   51\n",
       "F      41   111  140\n",
       "H      17    66   31\n",
       "I     102   102   81\n",
       "J     101    96  100\n",
       "K      45    93   81"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "6d611ec9",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "df1.insert(loc = 1,     #   插入列的位置\n",
    "           column = 'C++' ,   #   column插入的列名字\n",
    "           value = np.random.randint(0,151,size = 10)) #  value插入的值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "1607327b",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>C++</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>88</td>\n",
       "      <td>21</td>\n",
       "      <td>61</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>125</td>\n",
       "      <td>113</td>\n",
       "      <td>56</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>80</td>\n",
       "      <td>7</td>\n",
       "      <td>87</td>\n",
       "      <td>128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>128</td>\n",
       "      <td>115</td>\n",
       "      <td>122</td>\n",
       "      <td>97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>99</td>\n",
       "      <td>130</td>\n",
       "      <td>136</td>\n",
       "      <td>51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>41</td>\n",
       "      <td>68</td>\n",
       "      <td>111</td>\n",
       "      <td>140</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>17</td>\n",
       "      <td>86</td>\n",
       "      <td>66</td>\n",
       "      <td>31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>102</td>\n",
       "      <td>4</td>\n",
       "      <td>102</td>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>101</td>\n",
       "      <td>97</td>\n",
       "      <td>96</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>45</td>\n",
       "      <td>37</td>\n",
       "      <td>93</td>\n",
       "      <td>81</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  C++  Math   En\n",
       "A      88   21    61  128\n",
       "B     125  113    56    5\n",
       "C      80    7    87  128\n",
       "D     128  115   122   97\n",
       "E      99  130   136   51\n",
       "F      41   68   111  140\n",
       "H      17   86    66   31\n",
       "I     102    4   102   81\n",
       "J     101   97    96  100\n",
       "K      45   37    93   81"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b77fda4e",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### Join SQL风格合并"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "26f9238c",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>height</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>softpo</td>\n",
       "      <td>175</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Brandon</td>\n",
       "      <td>180</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Ella</td>\n",
       "      <td>169</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Daniel</td>\n",
       "      <td>177</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>张三</td>\n",
       "      <td>168</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name  height\n",
       "0   softpo     175\n",
       "1  Brandon     180\n",
       "2     Ella     169\n",
       "3   Daniel     177\n",
       "4       张三     168"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>weight</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>softpo</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Brandon</td>\n",
       "      <td>65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Ella</td>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Daniel</td>\n",
       "      <td>63</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>李四</td>\n",
       "      <td>88</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name  weight\n",
       "0   softpo      70\n",
       "1  Brandon      65\n",
       "2     Ella      74\n",
       "3   Daniel      63\n",
       "4       李四      88"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>名字</th>\n",
       "      <th>salary</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>softpo</td>\n",
       "      <td>80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Brandon</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Ella</td>\n",
       "      <td>48</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Daniel</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>张三</td>\n",
       "      <td>85</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        名字  salary\n",
       "0   softpo      80\n",
       "1  Brandon      45\n",
       "2     Ella      48\n",
       "3   Daniel      28\n",
       "4       张三      85"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df1 = pd.DataFrame(data = {'name':['softpo','Brandon','Ella','Daniel','张三'],\n",
    "                           'height':[175,180,169,177,168]})   # 身高\n",
    "df2 = pd.DataFrame(data = {'name':['softpo','Brandon','Ella','Daniel','李四'],\n",
    "                           'weight':[70,65,74,63,88]})   #  体重\n",
    "df3 = pd.DataFrame(data = {'名字':['softpo','Brandon','Ella','Daniel','张三'],\n",
    "                           'salary':np.random.randint(20,100,size = 5)})   #  薪水\n",
    "display(df1,df2,df3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "id": "eadb9125",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>height</th>\n",
       "      <th>name</th>\n",
       "      <th>weight</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>softpo</td>\n",
       "      <td>175</td>\n",
       "      <td>softpo</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Brandon</td>\n",
       "      <td>180</td>\n",
       "      <td>Brandon</td>\n",
       "      <td>65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Ella</td>\n",
       "      <td>169</td>\n",
       "      <td>Ella</td>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Daniel</td>\n",
       "      <td>177</td>\n",
       "      <td>Daniel</td>\n",
       "      <td>63</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>张三</td>\n",
       "      <td>168</td>\n",
       "      <td>李四</td>\n",
       "      <td>88</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name  height     name  weight\n",
       "0   softpo     175   softpo      70\n",
       "1  Brandon     180  Brandon      65\n",
       "2     Ella     169     Ella      74\n",
       "3   Daniel     177   Daniel      63\n",
       "4       张三     168       李四      88"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat([df1,df2],axis=  1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "3bb03581",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>height</th>\n",
       "      <th>weight</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>softpo</td>\n",
       "      <td>175</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Brandon</td>\n",
       "      <td>180</td>\n",
       "      <td>65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Ella</td>\n",
       "      <td>169</td>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Daniel</td>\n",
       "      <td>177</td>\n",
       "      <td>63</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name  height  weight\n",
       "0   softpo     175      70\n",
       "1  Brandon     180      65\n",
       "2     Ella     169      74\n",
       "3   Daniel     177      63"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  根据共同属性合并数据\n",
    "#  如果无匹配相同列将无法合并，需要指定left_on，right_on\n",
    "pd.merge(df1,df2,how = 'inner')  #  根据共同的列进行合并，相当于两表合并，外键（如果外键不同将不会合并）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "c8cf3d55",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>height</th>\n",
       "      <th>weight</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>softpo</td>\n",
       "      <td>175.0</td>\n",
       "      <td>70.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Brandon</td>\n",
       "      <td>180.0</td>\n",
       "      <td>65.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Ella</td>\n",
       "      <td>169.0</td>\n",
       "      <td>74.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Daniel</td>\n",
       "      <td>177.0</td>\n",
       "      <td>63.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>张三</td>\n",
       "      <td>168.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>李四</td>\n",
       "      <td>NaN</td>\n",
       "      <td>88.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name  height  weight\n",
       "0   softpo   175.0    70.0\n",
       "1  Brandon   180.0    65.0\n",
       "2     Ella   169.0    74.0\n",
       "3   Daniel   177.0    63.0\n",
       "4       张三   168.0     NaN\n",
       "5       李四     NaN    88.0"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.merge(df1,df2,how = 'outer')  #  how = 'outer'外合并，所有数据保留，填充空数据,默认inner内合并"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "e96e4fac",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>height</th>\n",
       "      <th>weight</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>softpo</td>\n",
       "      <td>175</td>\n",
       "      <td>70.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Brandon</td>\n",
       "      <td>180</td>\n",
       "      <td>65.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Ella</td>\n",
       "      <td>169</td>\n",
       "      <td>74.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Daniel</td>\n",
       "      <td>177</td>\n",
       "      <td>63.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>张三</td>\n",
       "      <td>168</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name  height  weight\n",
       "0   softpo     175    70.0\n",
       "1  Brandon     180    65.0\n",
       "2     Ella     169    74.0\n",
       "3   Daniel     177    63.0\n",
       "4       张三     168     NaN"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.merge(df1,df2,how = 'left')  # 左合并"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "id": "00da196e",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>height</th>\n",
       "      <th>名字</th>\n",
       "      <th>salary</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>softpo</td>\n",
       "      <td>175</td>\n",
       "      <td>softpo</td>\n",
       "      <td>80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Brandon</td>\n",
       "      <td>180</td>\n",
       "      <td>Brandon</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Ella</td>\n",
       "      <td>169</td>\n",
       "      <td>Ella</td>\n",
       "      <td>48</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Daniel</td>\n",
       "      <td>177</td>\n",
       "      <td>Daniel</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>张三</td>\n",
       "      <td>168</td>\n",
       "      <td>张三</td>\n",
       "      <td>85</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name  height       名字  salary\n",
       "0   softpo     175   softpo      80\n",
       "1  Brandon     180  Brandon      45\n",
       "2     Ella     169     Ella      48\n",
       "3   Daniel     177   Daniel      28\n",
       "4       张三     168       张三      85"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.merge(df1,df3,left_on='name',right_on='名字')  #  指定左边的列与右边的列合并"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "673df7ba",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>73</td>\n",
       "      <td>59</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>42</td>\n",
       "      <td>85</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>143</td>\n",
       "      <td>47</td>\n",
       "      <td>126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>8</td>\n",
       "      <td>58</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>57</td>\n",
       "      <td>54</td>\n",
       "      <td>137</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>124</td>\n",
       "      <td>29</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>40</td>\n",
       "      <td>82</td>\n",
       "      <td>37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>79</td>\n",
       "      <td>36</td>\n",
       "      <td>72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>85</td>\n",
       "      <td>106</td>\n",
       "      <td>103</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "A       3     5  149\n",
       "B      73    59  108\n",
       "C      42    85   84\n",
       "D     143    47  126\n",
       "E       8    58    4\n",
       "F      57    54  137\n",
       "H     124    29   22\n",
       "I      40    82   37\n",
       "J      79    36   72\n",
       "K      85   106  103"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df4 = pd.DataFrame(data = np.random.randint(0,151,size = (10,3)),\n",
    "                  columns=['Python','Math','En'],\n",
    "                  index = list('ABCDEFHIJK'))\n",
    "df4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "id": "eb0f575f",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A     52.3\n",
       "B     80.0\n",
       "C     70.3\n",
       "D    105.3\n",
       "E     23.3\n",
       "F     82.7\n",
       "H     58.3\n",
       "I     53.0\n",
       "J     62.3\n",
       "K     98.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score_mean = df4.mean(axis = 1).round(1)  #  求得每一行的平均分，保留一位小数\n",
    "score_mean"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "id": "07a4e207",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'score_meanc' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_7668/1020291829.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf4\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minsert\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mloc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolumn\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'平均分'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mvalue\u001b[0m\u001b[1;33m=\u001b[0m \u001b[0mscore_meanc\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mdf4\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'score_meanc' is not defined"
     ]
    }
   ],
   "source": [
    "df4.insert(loc = 2, column='平均分',value= score_meanc)  #  插入平均分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "id": "69bb716a",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>73</td>\n",
       "      <td>59</td>\n",
       "      <td>108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>42</td>\n",
       "      <td>85</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>143</td>\n",
       "      <td>47</td>\n",
       "      <td>126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>8</td>\n",
       "      <td>58</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>57</td>\n",
       "      <td>54</td>\n",
       "      <td>137</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>124</td>\n",
       "      <td>29</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>40</td>\n",
       "      <td>82</td>\n",
       "      <td>37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>79</td>\n",
       "      <td>36</td>\n",
       "      <td>72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>85</td>\n",
       "      <td>106</td>\n",
       "      <td>103</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "A       3     5  149\n",
       "B      73    59  108\n",
       "C      42    85   84\n",
       "D     143    47  126\n",
       "E       8    58    4\n",
       "F      57    54  137\n",
       "H     124    29   22\n",
       "I      40    82   37\n",
       "J      79    36   72\n",
       "K      85   106  103"
      ]
     },
     "execution_count": 114,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df5 = df4.iloc[:,[0,1,3]]  #  删除指定列\n",
    "df5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "id": "d79ab2ff",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A     52.3\n",
       "B     80.0\n",
       "C     70.3\n",
       "D    105.3\n",
       "E     23.3\n",
       "F     82.7\n",
       "H     58.3\n",
       "I     53.0\n",
       "J     62.3\n",
       "K     98.0\n",
       "Name: 平均分, dtype: float64"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score_mean.name = '平均分'  #  增加名称\n",
    "score_mean"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "8e5746ec",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "      <th>平均分</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>149</td>\n",
       "      <td>52.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>73</td>\n",
       "      <td>59</td>\n",
       "      <td>108</td>\n",
       "      <td>80.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>42</td>\n",
       "      <td>85</td>\n",
       "      <td>84</td>\n",
       "      <td>70.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>143</td>\n",
       "      <td>47</td>\n",
       "      <td>126</td>\n",
       "      <td>105.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>8</td>\n",
       "      <td>58</td>\n",
       "      <td>4</td>\n",
       "      <td>23.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>57</td>\n",
       "      <td>54</td>\n",
       "      <td>137</td>\n",
       "      <td>82.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>124</td>\n",
       "      <td>29</td>\n",
       "      <td>22</td>\n",
       "      <td>58.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>40</td>\n",
       "      <td>82</td>\n",
       "      <td>37</td>\n",
       "      <td>53.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>79</td>\n",
       "      <td>36</td>\n",
       "      <td>72</td>\n",
       "      <td>62.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>85</td>\n",
       "      <td>106</td>\n",
       "      <td>103</td>\n",
       "      <td>98.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En    平均分\n",
       "A       3     5  149   52.3\n",
       "B      73    59  108   80.0\n",
       "C      42    85   84   70.3\n",
       "D     143    47  126  105.3\n",
       "E       8    58    4   23.3\n",
       "F      57    54  137   82.7\n",
       "H     124    29   22   58.3\n",
       "I      40    82   37   53.0\n",
       "J      79    36   72   62.3\n",
       "K      85   106  103   98.0"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.merge(df5,score_mean,\n",
    "         left_index=True,  #  根据行索引合并\n",
    "         right_index=True)  #  根据行索引合并"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "34103610",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据清洗"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "efe71c8b",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>color</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>blue</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>green</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>green</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>blue</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>None</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>NaN</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>green</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   color  price\n",
       "0    red     20\n",
       "1   blue     15\n",
       "2    red     20\n",
       "3  green     18\n",
       "4  green     18\n",
       "5   blue     22\n",
       "6   None     30\n",
       "7    NaN     30\n",
       "8  green     22"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(data = {'color':['red','blue','red','green','green','blue',None,np.NAN,'green'],\n",
    "                          'price':[20,15,20,18,18,22,30,30,22]})\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "34195622",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>color</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>blue</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>green</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>blue</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>None</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>green</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   color  price\n",
       "0    red     20\n",
       "1   blue     15\n",
       "3  green     18\n",
       "5   blue     22\n",
       "6   None     30\n",
       "8  green     22"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  drop_duplicates 删除重复数据\n",
    "df.drop_duplicates()  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f4271101",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>color</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>blue</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>green</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>green</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>blue</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>green</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   color  price\n",
       "0    red     20\n",
       "1   blue     15\n",
       "2    red     20\n",
       "3  green     18\n",
       "4  green     18\n",
       "5   blue     22\n",
       "8  green     22"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  删除空数据\n",
    "df.dropna()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "0b1c9ef1",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>color</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>blue</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>green</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>blue</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>NaN</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   color  price\n",
       "0    red     20\n",
       "1   blue     15\n",
       "3  green     18\n",
       "5   blue     22\n",
       "7    NaN     30"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  labels 删除指定行\n",
    "df.drop(labels=[2,4,6,8])   #  默认情况下删除行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "f4e9ce61",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   price\n",
       "0     20\n",
       "1     15\n",
       "2     20\n",
       "3     18\n",
       "4     18\n",
       "5     22\n",
       "6     30\n",
       "7     30\n",
       "8     22"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  删除指定列\n",
    "df.drop(labels= 'color',axis= 1) #  删除列 axis= 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "150f1d92",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>color</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>red</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>blue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>red</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>green</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>green</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>blue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>green</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   color\n",
       "0    red\n",
       "1   blue\n",
       "2    red\n",
       "3  green\n",
       "4  green\n",
       "5   blue\n",
       "6   None\n",
       "7    NaN\n",
       "8  green"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.filter(items=['color']) #  filter 指定保留哪一列的数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "afbf16f4",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>color</th>\n",
       "      <th>price</th>\n",
       "      <th>size</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>blue</td>\n",
       "      <td>15</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>red</td>\n",
       "      <td>20</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>green</td>\n",
       "      <td>18</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>green</td>\n",
       "      <td>18</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>blue</td>\n",
       "      <td>22</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>None</td>\n",
       "      <td>30</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>NaN</td>\n",
       "      <td>30</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>green</td>\n",
       "      <td>22</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   color  price  size\n",
       "0    red     20  1024\n",
       "1   blue     15  1024\n",
       "2    red     20  1024\n",
       "3  green     18  1024\n",
       "4  green     18  1024\n",
       "5   blue     22  1024\n",
       "6   None     30  1024\n",
       "7    NaN     30  1024\n",
       "8  green     22  1024"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['size'] = 1024  #  插入一列并进行广播\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "3ff45436",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "      <th>size</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>20</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>15</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>18</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>18</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>22</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>30</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>30</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>22</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   price  size\n",
       "0     20  1024\n",
       "1     15  1024\n",
       "2     20  1024\n",
       "3     18  1024\n",
       "4     18  1024\n",
       "5     22  1024\n",
       "6     30  1024\n",
       "7     30  1024\n",
       "8     22  1024"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.filter(like= 'i')  #  模糊匹配，保留带有I的字母列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "26005773",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "      <th>size</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>20</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>15</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>18</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>18</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>22</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>30</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>30</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>22</td>\n",
       "      <td>1024</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   price  size\n",
       "0     20  1024\n",
       "1     15  1024\n",
       "2     20  1024\n",
       "3     18  1024\n",
       "4     18  1024\n",
       "5     22  1024\n",
       "6     30  1024\n",
       "7     30  1024\n",
       "8     22  1024"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    " #  正则匹配方法很多，如果只要给一个“e”那么列中只要含有e的字符都会被匹配，如果带\"$\"放在后面则表示，最后一位是e才会被匹配。\n",
    "df.filter(regex= 'e$')  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "071eafd7",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([681,  35, 760,  66, 823, 291, 156, 300, 906, 368, 633, 583, 257,\n",
       "        98, 243, 224, 351, 977, 206, 172, 774, 117, 516, 547, 238, 725,\n",
       "       553, 174, 919, 898, 561, 883, 837, 292,  70, 278, 322, 274, 287,\n",
       "       678, 676, 118, 405, 713, 811, 821, 497, 380, 268, 275, 930, 304,\n",
       "       668, 401, 186, 584, 501, 561, 501, 239, 967, 406, 868, 401, 671,\n",
       "       928,  52, 444, 476, 809, 161,  70, 944, 488, 986, 483, 469, 573,\n",
       "       169, 715, 989, 832, 434, 209, 926, 469, 311, 183, 843, 419, 521,\n",
       "        93, 843, 281,  25, 136, 545, 768, 907, 593, 869, 932, 134, 393,\n",
       "       452, 328, 625, 298, 711, 574,  80, 645, 864, 980, 952, 787, 946,\n",
       "       676, 642, 694, 546, 457, 129, 472, 772, 368,  16, 237, 902, 377,\n",
       "       501, 294, 306, 192, 857, 551, 128, 606, 456, 199, 702, 917, 795,\n",
       "       253, 240, 666, 289, 195, 248, 432, 477, 263, 535, 676, 864, 608,\n",
       "        95, 887, 219,  20, 515, 360, 243, 703, 635, 193, 572, 210, 824,\n",
       "       394, 495, 354, 967, 379, 128, 495, 589, 703, 262, 733, 901, 405,\n",
       "       651, 109, 737, 186, 930, 992, 818, 994, 208, 142, 213, 773, 343,\n",
       "       153, 655, 819, 773, 114])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 异常值过滤\n",
    "a = np.random.randint(0,1000,size = 200)\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "a7e02e53",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([681, 760, 291, 156, 300, 368, 633, 583, 257, 243, 224, 351, 206,\n",
       "       172, 774, 117, 516, 547, 238, 725, 553, 174, 561, 292, 278, 322,\n",
       "       274, 287, 678, 676, 118, 405, 713, 497, 380, 268, 275, 304, 668,\n",
       "       401, 186, 584, 501, 561, 501, 239, 406, 401, 671, 444, 476, 161,\n",
       "       488, 483, 469, 573, 169, 715, 434, 209, 469, 311, 183, 419, 521,\n",
       "       281, 136, 545, 768, 593, 134, 393, 452, 328, 625, 298, 711, 574,\n",
       "       645, 787, 676, 642, 694, 546, 457, 129, 472, 772, 368, 237, 377,\n",
       "       501, 294, 306, 192, 551, 128, 606, 456, 199, 702, 795, 253, 240,\n",
       "       666, 289, 195, 248, 432, 477, 263, 535, 676, 608, 219, 515, 360,\n",
       "       243, 703, 635, 193, 572, 210, 394, 495, 354, 379, 128, 495, 589,\n",
       "       703, 262, 733, 405, 651, 109, 737, 186, 208, 142, 213, 773, 343,\n",
       "       153, 655, 773, 114])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  异常值个人设定：大于800，小于100算异常值\n",
    "cond = (a <= 800)  & (a >= 100)\n",
    "a[cond]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "8b4c8b05",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.89816984, -0.35099392,  1.47183447, ...,  0.38939659,\n",
       "        0.87230316, -0.39057859])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  正态分布\n",
    "b = np.random.randn(100000)\n",
    "b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "e2748da7",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 3.4999265 ,  3.04683942, -3.48106077, -3.21586295, -3.1800334 ,\n",
       "        3.37455382, -3.06926683,  3.22855144, -3.04651552,  3.05995141,\n",
       "       -3.28057762,  3.38693666, -3.39874676, -3.07356644,  3.2882828 ,\n",
       "        3.2364347 , -3.76672228,  3.30696008, -3.31842093, -3.02084172,\n",
       "        3.29913999, -3.57449108,  3.53797128,  3.07633926, -3.06433151,\n",
       "       -3.26208291, -3.4218892 , -3.00691427, -3.49491451, -3.25296979,\n",
       "        3.12487785, -3.20069968, -3.82116018,  3.18072091, -3.24282222,\n",
       "       -3.25157198,  3.15177138,  3.12117325,  3.09955574, -3.29009655,\n",
       "        3.43340536,  3.25271644, -3.31673739,  3.04897206, -3.00168761,\n",
       "       -3.43367033,  3.05252601,  3.05171541, -3.00640063,  3.14552744,\n",
       "        3.4376145 ,  3.21022178, -3.52625503, -3.09540268, -3.07846841,\n",
       "       -3.03392846,  3.02925439, -3.19623239, -3.0399731 ,  3.16316387,\n",
       "        3.42415357,  3.08619153,  3.28284821,  3.16157785,  3.18624296,\n",
       "       -3.02308943, -3.59424983,  3.31157332, -3.15968494,  4.17843949,\n",
       "        3.42816515, -3.36497424,  3.00989984,  3.34899799,  3.40053753,\n",
       "       -3.35468679, -3.57991905, -3.06115833, -3.46062692,  3.22564241,\n",
       "       -3.4127511 ,  3.21516977,  3.06322352, -3.04180294,  3.03857341,\n",
       "       -3.1996316 ,  3.0419153 , -3.06507611,  3.03565953,  3.16052949,\n",
       "        3.14118093, -4.49299262, -3.04351694,  3.06261635, -3.5468362 ,\n",
       "       -3.03618204,  3.03779443,  3.11253043,  3.51448409,  3.11042369,\n",
       "        3.04703789, -3.27563322, -3.2589551 ,  3.36949506,  3.47614557,\n",
       "       -3.71043068, -3.72279119, -3.16613515, -3.17396618, -3.67633037,\n",
       "       -3.19387459, -3.34171241,  3.22341372,  3.28384857,  3.07887349,\n",
       "        3.02051228, -3.43328648,  3.03879597, -3.30019988, -3.0295179 ,\n",
       "       -3.48543416,  3.69279354,  3.33566652, -3.21893562,  3.46799508,\n",
       "       -3.16177308,  3.29951956, -3.11275662, -3.30515687,  3.96902524,\n",
       "       -3.21028062,  3.00510902,  3.98652767, -3.11842097,  3.17824462,\n",
       "        3.04218788, -3.00060697,  3.81075652, -3.15896994,  3.40267097,\n",
       "        3.12169717, -3.1594878 , -3.28044126, -3.56931039,  3.44899464,\n",
       "        3.45026839,  3.170192  , -3.13248821, -3.16703555,  3.0717754 ,\n",
       "        3.92150566,  3.13934868, -3.19878005, -3.02577642,  3.0206795 ,\n",
       "        3.17929743,  3.81381158, -3.45137278, -3.41269585, -3.16739994,\n",
       "        3.34611629,  3.09178917, -3.06413231, -3.63995467,  3.3042952 ,\n",
       "        3.7546493 , -3.15148405, -3.15663635,  3.23518793,  3.10991851,\n",
       "       -3.71390513, -3.14323091, -3.21829373,  3.17041382,  3.19887012,\n",
       "        3.15837684,  4.30493048, -3.37807226, -3.61725412,  3.18339979,\n",
       "        3.13172007,  3.47771567,  3.08838601, -3.14955443, -3.20209747,\n",
       "        3.13082363,  3.29601772, -3.23780899,  4.27641189, -3.20710228,\n",
       "        3.53432188, -3.02434619, -3.37648296,  3.6932886 , -3.12594123,\n",
       "        3.02002869, -3.95607937, -3.60736185,  3.51052786, -3.03609477,\n",
       "        3.46629119, -3.23264095, -3.0709399 ,  3.15170375, -3.37892882,\n",
       "        3.53156084,  3.69455293, -3.10283507, -3.41943829, -3.1731007 ,\n",
       "        3.3057537 ,  3.42386716,  3.07588458,  3.6710842 ,  3.07517114,\n",
       "       -3.73424995,  3.52402834,  3.35148768, -3.51844777,  3.10490377,\n",
       "       -3.48263617, -3.20325366,  3.40389175, -3.26823727,  3.00285958,\n",
       "        3.32395611,  3.2270173 ,  3.24437093,  3.23627237,  3.10814271,\n",
       "        3.06063676,  3.11601039,  3.28434019, -3.06602989, -3.31638415,\n",
       "       -3.16000933, -3.25136689,  3.22927495, -3.52912337, -3.23503866,\n",
       "       -3.96341516,  3.13590578, -3.22248452, -3.3186303 ,  3.20803133,\n",
       "        3.00178183,  3.80163585,  3.30399507, -3.02117369,  3.00541286,\n",
       "       -3.45519688,  3.11505039,  3.19499871, -3.0567559 , -3.93993917,\n",
       "        3.07312049,  3.10181024, -3.18202299,  3.54370092, -3.33055755,\n",
       "       -3.09290778,  3.48586761, -3.95753291, -3.36157627,  3.0018732 ,\n",
       "        3.52930399, -3.16241041,  3.23132078, -4.17778548, -3.11161153,\n",
       "       -3.24258375, -3.14069578,  3.5932942 ,  3.03335498, -3.26923856])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cond = np.abs(b) > 3*1\n",
    "b[cond]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "787ac14d",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据转换"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6ed2214f",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 轴和元素转换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "de4868b5",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "74b7729c",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>7</td>\n",
       "      <td>7</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Tensorflow  Keras\n",
       "A       4           7      3\n",
       "B       7           7      8\n",
       "C       2           2      4\n",
       "D       3           3      6\n",
       "E       7           0      3\n",
       "F       5           8      1\n",
       "H       2           0      7\n",
       "I       0           5      6\n",
       "J       8           8      8\n",
       "K       4           2      4"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df =  pd.DataFrame(data = np.random.randint(0,10,size = (10,3)),\n",
    "                  columns = ['Python','Tensorflow','Keras'],\n",
    "                  index = list('ABCDEFHIJK'))\n",
    "df "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "6d1bbb6a",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "#  rename重命名行列名称，index = 行  columns = 列\n",
    "df.rename(index = {'A':'X','k':'Y'},\n",
    "          columns = {\"Python\":\"人工智能\"},\n",
    "         inplace = True)   #  +inplace= True替换原数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "c4bcd9f0",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "#  替换值(一对一替换)\n",
    "df.replace(5,50,inplace=True)  #  将值为“5”的全部替换为50"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a2e0acb0",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "#  替换值（多对一）\n",
    "df.replace([2,7],1024,inplace=True)  #  将2和7替换为1024"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "706d2670",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "#  指定索引替换\n",
    "df.iloc[4,1] = np.NAN  #  将第5行，第2列替换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "b6e107a6",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "#  替换值多数据一起替换\n",
    "df.replace({0:2048,np.NAN:-100},inplace=True)  #  将值为“0”替换成2048，将空数据NAN替换为-100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "33f788e3",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>X</th>\n",
       "      <td>4</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>3</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>1024</td>\n",
       "      <td>-100.0</td>\n",
       "      <td>-100.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>50</td>\n",
       "      <td>8.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>1024</td>\n",
       "      <td>2048.0</td>\n",
       "      <td>1024.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>2048</td>\n",
       "      <td>50.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>8</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>4</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   人工智能  Tensorflow   Keras\n",
       "X     4      1024.0     3.0\n",
       "B  1024      1024.0     8.0\n",
       "C  1024      1024.0     4.0\n",
       "D     3         3.0     6.0\n",
       "E  1024      -100.0  -100.0\n",
       "F    50         8.0     1.0\n",
       "H  1024      2048.0  1024.0\n",
       "I  2048        50.0     6.0\n",
       "J     8         8.0     8.0\n",
       "K     4      1024.0     4.0"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "477ec0e2",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>X</th>\n",
       "      <td>4</td>\n",
       "      <td>-1024.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1024</td>\n",
       "      <td>-1024.0</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1024</td>\n",
       "      <td>-1024.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>3</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>1024</td>\n",
       "      <td>-100.0</td>\n",
       "      <td>-100.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>50</td>\n",
       "      <td>8.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>1024</td>\n",
       "      <td>2048.0</td>\n",
       "      <td>1024.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>2048</td>\n",
       "      <td>50.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>8</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>4</td>\n",
       "      <td>-1024.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   人工智能  Tensorflow   Keras\n",
       "X     4     -1024.0     3.0\n",
       "B  1024     -1024.0     8.0\n",
       "C  1024     -1024.0     4.0\n",
       "D     3         3.0     6.0\n",
       "E  1024      -100.0  -100.0\n",
       "F    50         8.0     1.0\n",
       "H  1024      2048.0  1024.0\n",
       "I  2048        50.0     6.0\n",
       "J     8         8.0     8.0\n",
       "K     4     -1024.0     4.0"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  指定列替换数据\n",
    "df.replace({\"Tensorflow\":1024},-1024)  #  将Tensorflow列中的1024值替换为-1024"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c87e90bc",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### map Series元素改变"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "56422d28",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>X</th>\n",
       "      <td>4</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>3</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>1024</td>\n",
       "      <td>-100.0</td>\n",
       "      <td>-100.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>50</td>\n",
       "      <td>8.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>1024</td>\n",
       "      <td>2048.0</td>\n",
       "      <td>1024.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>2048</td>\n",
       "      <td>50.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>8</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>4</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   人工智能  Tensorflow   Keras\n",
       "X     4      1024.0     3.0\n",
       "B  1024      1024.0     8.0\n",
       "C  1024      1024.0     4.0\n",
       "D     3         3.0     6.0\n",
       "E  1024      -100.0  -100.0\n",
       "F    50         8.0     1.0\n",
       "H  1024      2048.0  1024.0\n",
       "I  2048        50.0     6.0\n",
       "J     8         8.0     8.0\n",
       "K     4      1024.0     4.0"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "5c2d7fa4",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "X      NaN\n",
       "B    3.140\n",
       "C    3.140\n",
       "D      NaN\n",
       "E    3.140\n",
       "F      NaN\n",
       "H    3.140\n",
       "I    2.718\n",
       "J      NaN\n",
       "K      NaN\n",
       "Name: 人工智能, dtype: float64"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  map指定一列修改符合条件的值 ，若数据没有符合条件，那么返回空数据\n",
    "df['人工智能'].map({1024:3.14,2048:2.718,6:1108})    #  修改“人工智能”列中的数据，将1024值改为3.14........"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "958f75cc",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "X     True\n",
       "B     True\n",
       "C     True\n",
       "D     True\n",
       "E    False\n",
       "F     True\n",
       "H     True\n",
       "I     True\n",
       "J     True\n",
       "K     True\n",
       "Name: Keras, dtype: bool"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['Keras'].map(lambda x :True if x > 0 else False)  #  如果大于0返回True，不然返回False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "9a14f1c4",
   "metadata": {
    "code_folding": [],
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "      <th>level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>X</th>\n",
       "      <td>4</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>3</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>1024</td>\n",
       "      <td>-100.0</td>\n",
       "      <td>-100.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>50</td>\n",
       "      <td>8.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>1024</td>\n",
       "      <td>2048.0</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>2048</td>\n",
       "      <td>50.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>8</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>4</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   人工智能  Tensorflow   Keras  level\n",
       "X     4      1024.0     3.0   True\n",
       "B  1024      1024.0     8.0   True\n",
       "C  1024      1024.0     4.0   True\n",
       "D     3         3.0     6.0  False\n",
       "E  1024      -100.0  -100.0  False\n",
       "F    50         8.0     1.0  False\n",
       "H  1024      2048.0  1024.0   True\n",
       "I  2048        50.0     6.0  False\n",
       "J     8         8.0     8.0  False\n",
       "K     4      1024.0     4.0   True"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  定义一个函数x\n",
    "def convert(x):\n",
    "    if x >= 1024:\n",
    "        return True\n",
    "    else:\n",
    "        return False\n",
    "    \n",
    "df ['level'] = df['Tensorflow'].map(convert)  #  map是映射，映射Tensorflow这列中每一个数据，传递到方法中\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4837c90c",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### apply元素改变"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "ffd3bb52",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "      <th>level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>X</th>\n",
       "      <td>4</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1024</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>3</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>1024</td>\n",
       "      <td>-100.0</td>\n",
       "      <td>-100.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>50</td>\n",
       "      <td>8.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>1024</td>\n",
       "      <td>2048.0</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>2048</td>\n",
       "      <td>50.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>8</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>4</td>\n",
       "      <td>1024.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   人工智能  Tensorflow   Keras  level\n",
       "X     4      1024.0     3.0   True\n",
       "B  1024      1024.0     8.0   True\n",
       "C  1024      1024.0     4.0   True\n",
       "D     3         3.0     6.0  False\n",
       "E  1024      -100.0  -100.0  False\n",
       "F    50         8.0     1.0  False\n",
       "H  1024      2048.0  1024.0   True\n",
       "I  2048        50.0     6.0  False\n",
       "J     8         8.0     8.0  False\n",
       "K     4      1024.0     4.0   True"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  既可以操作series，也可以操作DataFrame\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "a5c5c3b5",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "X     104\n",
       "B    1124\n",
       "C    1124\n",
       "D     103\n",
       "E    1124\n",
       "F     150\n",
       "H    1124\n",
       "I    2148\n",
       "J     108\n",
       "K     104\n",
       "Name: 人工智能, dtype: int64"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"人工智能\"].apply(lambda x : x + 100)  #  对“人工智能”列中每个值+100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "8c3f4875",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "X    1\n",
       "B    1\n",
       "C    1\n",
       "D    0\n",
       "E    0\n",
       "F    0\n",
       "H    1\n",
       "I    0\n",
       "J    0\n",
       "K    1\n",
       "Name: level, dtype: int64"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"level\"].apply(lambda x : 1 if x else 0)  #  对“level”列中，如果是True返回1，否则返回0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "149f982c",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "      <th>level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>X</th>\n",
       "      <td>1004</td>\n",
       "      <td>2024.0</td>\n",
       "      <td>1003.0</td>\n",
       "      <td>1001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>2024</td>\n",
       "      <td>2024.0</td>\n",
       "      <td>1008.0</td>\n",
       "      <td>1001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>2024</td>\n",
       "      <td>2024.0</td>\n",
       "      <td>1004.0</td>\n",
       "      <td>1001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>1003</td>\n",
       "      <td>1003.0</td>\n",
       "      <td>1006.0</td>\n",
       "      <td>1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>2024</td>\n",
       "      <td>900.0</td>\n",
       "      <td>900.0</td>\n",
       "      <td>1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>1050</td>\n",
       "      <td>1008.0</td>\n",
       "      <td>1001.0</td>\n",
       "      <td>1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>2024</td>\n",
       "      <td>3048.0</td>\n",
       "      <td>2024.0</td>\n",
       "      <td>1001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>3048</td>\n",
       "      <td>1050.0</td>\n",
       "      <td>1006.0</td>\n",
       "      <td>1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>1008</td>\n",
       "      <td>1008.0</td>\n",
       "      <td>1008.0</td>\n",
       "      <td>1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>1004</td>\n",
       "      <td>2024.0</td>\n",
       "      <td>1004.0</td>\n",
       "      <td>1001</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   人工智能  Tensorflow   Keras  level\n",
       "X  1004      2024.0  1003.0   1001\n",
       "B  2024      2024.0  1008.0   1001\n",
       "C  2024      2024.0  1004.0   1001\n",
       "D  1003      1003.0  1006.0   1000\n",
       "E  2024       900.0   900.0   1000\n",
       "F  1050      1008.0  1001.0   1000\n",
       "H  2024      3048.0  2024.0   1001\n",
       "I  3048      1050.0  1006.0   1000\n",
       "J  1008      1008.0  1008.0   1000\n",
       "K  1004      2024.0  1004.0   1001"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.apply(lambda x : x + 1000)  #  apply对 所有的数据进行映射，修改"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "0b5f3d64",
   "metadata": {
    "code_folding": [],
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>人工智能</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "      <th>level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>537.0</td>\n",
       "      <td>537.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>10.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6213.0</td>\n",
       "      <td>6113.0</td>\n",
       "      <td>964.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     人工智能  Tensorflow  Keras  level\n",
       "0   537.0       537.0    5.0    0.5\n",
       "1    10.0        10.0   10.0   10.0\n",
       "2  6213.0      6113.0  964.0    5.0"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  定义一个函数convert\n",
    "def convert(x):\n",
    "    return (x.median(),x.count(),x.sum())  #  return = 返回，返回中位数以及数量,返回求和\n",
    "\n",
    "df.apply(convert).round(1)  #  默认计算列数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "93de99dd",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "X       (3.5, 4, 1032.0)\n",
       "B     (516.0, 4, 2057.0)\n",
       "C     (514.0, 4, 2053.0)\n",
       "D         (3.0, 4, 12.0)\n",
       "E      (-50.0, 4, 824.0)\n",
       "F         (4.5, 4, 59.0)\n",
       "H    (1024.0, 4, 4097.0)\n",
       "I      (28.0, 4, 2104.0)\n",
       "J         (8.0, 4, 24.0)\n",
       "K       (4.0, 4, 1033.0)\n",
       "dtype: object"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.apply(convert,axis = 1)  #  axis = 1，计算行数据"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6d236333",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### transform元素转变"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "b9474e74",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>5</td>\n",
       "      <td>7</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Tensorflow  Keras\n",
       "A       5           4      0\n",
       "B       0           4      4\n",
       "C       5           7      6\n",
       "D       3           2      2\n",
       "E       4           7      1\n",
       "F       5           4      1\n",
       "H       6           4      2\n",
       "I       0           9      0\n",
       "J       2           6      1\n",
       "K       0           7      5"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(np.random.randint(0,10,size = (10,3)),\n",
    "                 columns = ['Python','Tensorflow','Keras'],\n",
    "                 index = list ('ABCDEFHIJK'))\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "be7439c1",
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A   -1024\n",
       "B   -1024\n",
       "C   -1024\n",
       "D   -1024\n",
       "E   -1024\n",
       "F   -1024\n",
       "H    1024\n",
       "I    1024\n",
       "J    1024\n",
       "K    1024\n",
       "Name: Python, dtype: int64"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    " #  这个功能和map，apply类似\n",
    "df['Python'].transform(lambda x : 1024 if x > 5 else - 1024 )  # 对\"Python\"列进行条件判断，如果数值大于5则。。。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "a17576e8",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sqrt</th>\n",
       "      <th>square</th>\n",
       "      <th>cumsum</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>1.414214</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>2.449490</td>\n",
       "      <td>36</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>1.732051</td>\n",
       "      <td>9</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>2.645751</td>\n",
       "      <td>49</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>1.732051</td>\n",
       "      <td>9</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>2.645751</td>\n",
       "      <td>49</td>\n",
       "      <td>29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>2.236068</td>\n",
       "      <td>25</td>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       sqrt  square  cumsum\n",
       "A  1.414214       4       2\n",
       "B  2.449490      36       8\n",
       "C  0.000000       0       8\n",
       "D  1.732051       9      11\n",
       "E  1.000000       1      12\n",
       "F  2.645751      49      19\n",
       "H  1.732051       9      22\n",
       "I  0.000000       0      22\n",
       "J  2.645751      49      29\n",
       "K  2.236068      25      34"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  指定一列，进行不同的计算\n",
    "df['Tensorflow'].transform([np.sqrt,np.square,np.cumsum])  #  对\"Tensorflow\"列进行开平方、平方、累加和"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "58dfdca3",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>3</td>\n",
       "      <td>1.414214</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>3</td>\n",
       "      <td>2.449490</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>4</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>7</td>\n",
       "      <td>1.732051</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>10</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>14</td>\n",
       "      <td>2.645751</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>20</td>\n",
       "      <td>1.732051</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>28</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>37</td>\n",
       "      <td>2.645751</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>46</td>\n",
       "      <td>2.236068</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Tensorflow  Keras\n",
       "A       3    1.414214  False\n",
       "B       3    2.449490   True\n",
       "C       4    0.000000  False\n",
       "D       7    1.732051  False\n",
       "E      10    1.000000  False\n",
       "F      14    2.645751  False\n",
       "H      20    1.732051  False\n",
       "I      28    0.000000   True\n",
       "J      37    2.645751  False\n",
       "K      46    2.236068  False"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def convert(x):\n",
    "    if x > 5:\n",
    "        return True\n",
    "    else:\n",
    "        return False\n",
    "\n",
    "#  对不同的列执行不同的操作计算\n",
    "df.transform({'Python':np.cumsum,'Tensorflow':np.sqrt,'Keras':convert})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2e04a71e",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 重排随机抽样哑变量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "f02de725",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>5</td>\n",
       "      <td>7</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Tensorflow  Keras\n",
       "A       5           4      0\n",
       "B       0           4      4\n",
       "C       5           7      6\n",
       "D       3           2      2\n",
       "E       4           7      1\n",
       "F       5           4      1\n",
       "H       6           4      2\n",
       "I       0           9      0\n",
       "J       2           6      1\n",
       "K       0           7      5"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "390f56f5",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([7, 3, 5, 0, 6, 2, 4, 9, 1, 8])"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "index = np.random.permutation(10)  #  permutation打乱顺序,返回打乱顺序的索引\n",
    "index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "37128ca6",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>9</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Tensorflow  Keras\n",
       "I       8           0      9\n",
       "D       3           3      2\n",
       "F       4           7      4\n",
       "A       3           2      1\n",
       "H       6           3      2\n",
       "C       1           0      5\n",
       "E       3           1      1\n",
       "K       9           5      0\n",
       "B       0           6      9\n",
       "J       9           7      1"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  take重排，索引打乱\n",
    "df.take(index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "ef8e8785",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>9</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Tensorflow  Keras\n",
       "K       9           5      0\n",
       "B       0           6      9\n",
       "C       1           0      5\n",
       "J       9           7      1\n",
       "H       6           3      2\n",
       "K       9           5      0\n",
       "C       1           0      5\n",
       "I       8           0      9\n",
       "C       1           0      5\n",
       "D       3           3      2\n",
       "F       4           7      4\n",
       "F       4           7      4\n",
       "F       4           7      4\n",
       "K       9           5      0\n",
       "K       9           5      0\n",
       "F       4           7      4\n",
       "B       0           6      9\n",
       "H       6           3      2\n",
       "H       6           3      2\n",
       "E       3           1      1"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  从大量的数据中随机抽取数据\n",
    "df.take(np.random.randint(0,10,size = 20)) #  随机抽样20个数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "8f109c64",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Key</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>b</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>b</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>c</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>b</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>c</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Key\n",
       "0   a\n",
       "1   b\n",
       "2   a\n",
       "3   b\n",
       "4   c\n",
       "5   b\n",
       "6   c"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2 = pd.DataFrame(data = {'Key':['a','b','a','b','c','b','c']})\n",
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "d8cb52cb",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Key_a</th>\n",
       "      <th>Key_b</th>\n",
       "      <th>Key_c</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Key_a  Key_b  Key_c\n",
       "0      1      0      0\n",
       "1      0      1      0\n",
       "2      1      0      0\n",
       "3      0      1      0\n",
       "4      0      0      1\n",
       "5      0      1      0\n",
       "6      0      0      1"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  one-hot，哑变量\n",
    "#  str类型的数据，经过哑变量可以使用数据表示\n",
    "pd.get_dummies(df2)  #  1表示：有，0表示：没有"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "58eb7449",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>b</th>\n",
       "      <th>c</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     a    b    c\n",
       "0    1    0    0\n",
       "1    0    1    0\n",
       "2    1    0    0\n",
       "3    0    1    0\n",
       "4    0    0    1\n",
       "5    0    1    0\n",
       "6    0    0    1"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  one-hot，哑变量\n",
    "pd.get_dummies(df2,prefix=' ',prefix_sep=' ')\n",
    "#  一下数据说明每一行中，a在0索引有没有，b在0索引有没有，C。。。。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4ef3d3b6",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据重塑"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "388bb5ce",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>5</td>\n",
       "      <td>7</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Tensorflow  Keras\n",
       "A       5           4      0\n",
       "B       0           4      4\n",
       "C       5           7      6\n",
       "D       3           2      2\n",
       "E       4           7      1\n",
       "F       5           4      1\n",
       "H       6           4      2\n",
       "I       0           9      0\n",
       "J       2           6      1\n",
       "K       0           7      5"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "4a4718a7",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "      <th>F</th>\n",
       "      <th>H</th>\n",
       "      <th>I</th>\n",
       "      <th>J</th>\n",
       "      <th>K</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Python</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Tensorflow</th>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Keras</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            A  B  C  D  E  F  H  I  J  K\n",
       "Python      5  0  5  3  4  5  6  0  2  0\n",
       "Tensorflow  4  4  7  2  7  4  4  9  6  7\n",
       "Keras       0  4  6  2  1  1  2  0  1  5"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  转置：行变列，列变行\n",
    "df.T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "f1a0b2e8",
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">A</th>\n",
       "      <th>期中</th>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">B</th>\n",
       "      <th>期中</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">C</th>\n",
       "      <th>期中</th>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">D</th>\n",
       "      <th>期中</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">E</th>\n",
       "      <th>期中</th>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">F</th>\n",
       "      <th>期中</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">H</th>\n",
       "      <th>期中</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">I</th>\n",
       "      <th>期中</th>\n",
       "      <td>3</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">J</th>\n",
       "      <th>期中</th>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">K</th>\n",
       "      <th>期中</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Python  Math  En\n",
       "A 期中       9     8   1\n",
       "  期末       5     6   3\n",
       "B 期中       0     3   9\n",
       "  期末       4     0   2\n",
       "C 期中       8     6   1\n",
       "  期末       0     7   9\n",
       "D 期中       0     2   4\n",
       "  期末       0     7   0\n",
       "E 期中       8     9   6\n",
       "  期末       8     1   8\n",
       "F 期中       1     0   6\n",
       "  期末       4     2   5\n",
       "H 期中       9     1   0\n",
       "  期末       5     5   7\n",
       "I 期中       3     6   5\n",
       "  期末       6     7   9\n",
       "J 期中       0     6   9\n",
       "  期末       5     3   5\n",
       "K 期中       5     0   0\n",
       "  期末       1     0   3"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2 = pd.DataFrame(np.random.randint(0,10,size = (20,3)),\n",
    "                  columns = ['Python', 'Math','En'],\n",
    "                  index = pd.MultiIndex.from_product([list('ABCDEFHIJK'),['期中','期末']]))  #  MultiIndex:多层索引\n",
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "8572ef03",
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th colspan=\"2\" halign=\"left\">Python</th>\n",
       "      <th colspan=\"2\" halign=\"left\">Math</th>\n",
       "      <th colspan=\"2\" halign=\"left\">En</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>期中</th>\n",
       "      <th>期末</th>\n",
       "      <th>期中</th>\n",
       "      <th>期末</th>\n",
       "      <th>期中</th>\n",
       "      <th>期末</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>3</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Python    Math    En   \n",
       "      期中 期末   期中 期末 期中 期末\n",
       "A      9  5    8  6  1  3\n",
       "B      0  4    3  0  9  2\n",
       "C      8  0    6  7  1  9\n",
       "D      0  0    2  7  4  0\n",
       "E      8  8    9  1  6  8\n",
       "F      1  4    0  2  6  5\n",
       "H      9  5    1  5  0  7\n",
       "I      3  6    6  7  5  9\n",
       "J      0  5    6  3  9  5\n",
       "K      5  1    0  0  0  3"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.unstack()  #  转置：将行索引变成列索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "c81f2a81",
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th colspan=\"2\" halign=\"left\">Python</th>\n",
       "      <th colspan=\"2\" halign=\"left\">Math</th>\n",
       "      <th colspan=\"2\" halign=\"left\">En</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>期中</th>\n",
       "      <th>期末</th>\n",
       "      <th>期中</th>\n",
       "      <th>期末</th>\n",
       "      <th>期中</th>\n",
       "      <th>期末</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>3</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Python    Math    En   \n",
       "      期中 期末   期中 期末 期中 期末\n",
       "A      9  5    8  6  1  3\n",
       "B      0  4    3  0  9  2\n",
       "C      8  0    6  7  1  9\n",
       "D      0  0    2  7  4  0\n",
       "E      8  8    9  1  6  8\n",
       "F      1  4    0  2  6  5\n",
       "H      9  5    1  5  0  7\n",
       "I      3  6    6  7  5  9\n",
       "J      0  5    6  3  9  5\n",
       "K      5  1    0  0  0  3"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.unstack(level = -1 )  #  level默认情况下是 -1，表示最后一层"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "46cd9cb0",
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A  期中  Python    9\n",
       "       Math      8\n",
       "       En        1\n",
       "   期末  Python    5\n",
       "       Math      6\n",
       "       En        3\n",
       "B  期中  Python    0\n",
       "       Math      3\n",
       "       En        9\n",
       "   期末  Python    4\n",
       "       Math      0\n",
       "       En        2\n",
       "C  期中  Python    8\n",
       "       Math      6\n",
       "       En        1\n",
       "   期末  Python    0\n",
       "       Math      7\n",
       "       En        9\n",
       "D  期中  Python    0\n",
       "       Math      2\n",
       "       En        4\n",
       "   期末  Python    0\n",
       "       Math      7\n",
       "       En        0\n",
       "E  期中  Python    8\n",
       "       Math      9\n",
       "       En        6\n",
       "   期末  Python    8\n",
       "       Math      1\n",
       "       En        8\n",
       "F  期中  Python    1\n",
       "       Math      0\n",
       "       En        6\n",
       "   期末  Python    4\n",
       "       Math      2\n",
       "       En        5\n",
       "H  期中  Python    9\n",
       "       Math      1\n",
       "       En        0\n",
       "   期末  Python    5\n",
       "       Math      5\n",
       "       En        7\n",
       "I  期中  Python    3\n",
       "       Math      6\n",
       "       En        5\n",
       "   期末  Python    6\n",
       "       Math      7\n",
       "       En        9\n",
       "J  期中  Python    0\n",
       "       Math      6\n",
       "       En        9\n",
       "   期末  Python    5\n",
       "       Math      3\n",
       "       En        5\n",
       "K  期中  Python    5\n",
       "       Math      0\n",
       "       En        0\n",
       "   期末  Python    1\n",
       "       Math      0\n",
       "       En        3\n",
       "dtype: int32"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.stack() #  列变行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "f43a7e8d",
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>期中</th>\n",
       "      <th>期末</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">A</th>\n",
       "      <th>En</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Math</th>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Python</th>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">B</th>\n",
       "      <th>En</th>\n",
       "      <td>9</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Math</th>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Python</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">C</th>\n",
       "      <th>En</th>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Math</th>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Python</th>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">D</th>\n",
       "      <th>En</th>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Math</th>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Python</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">E</th>\n",
       "      <th>En</th>\n",
       "      <td>6</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Math</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Python</th>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">F</th>\n",
       "      <th>En</th>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Math</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Python</th>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">H</th>\n",
       "      <th>En</th>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Math</th>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Python</th>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">I</th>\n",
       "      <th>En</th>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Math</th>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Python</th>\n",
       "      <td>3</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">J</th>\n",
       "      <th>En</th>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Math</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Python</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">K</th>\n",
       "      <th>En</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Math</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Python</th>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          期中  期末\n",
       "A En       1   3\n",
       "  Math     8   6\n",
       "  Python   9   5\n",
       "B En       9   2\n",
       "  Math     3   0\n",
       "  Python   0   4\n",
       "C En       1   9\n",
       "  Math     6   7\n",
       "  Python   8   0\n",
       "D En       4   0\n",
       "  Math     2   7\n",
       "  Python   0   0\n",
       "E En       6   8\n",
       "  Math     9   1\n",
       "  Python   8   8\n",
       "F En       6   5\n",
       "  Math     0   2\n",
       "  Python   1   4\n",
       "H En       0   7\n",
       "  Math     1   5\n",
       "  Python   9   5\n",
       "I En       5   9\n",
       "  Math     6   7\n",
       "  Python   3   6\n",
       "J En       9   5\n",
       "  Math     6   3\n",
       "  Python   0   5\n",
       "K En       0   3\n",
       "  Math     0   0\n",
       "  Python   5   1"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.unstack().stack(level = 0)  #  行列互换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "2fd60c20",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python    4.05\n",
       "Math      3.95\n",
       "En        4.60\n",
       "dtype: float64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.mean()  #  默认情况下结算的是列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "f8f317ac",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A  期中    6.000000\n",
       "   期末    4.666667\n",
       "B  期中    4.000000\n",
       "   期末    2.000000\n",
       "C  期中    5.000000\n",
       "   期末    5.333333\n",
       "D  期中    2.000000\n",
       "   期末    2.333333\n",
       "E  期中    7.666667\n",
       "   期末    5.666667\n",
       "F  期中    2.333333\n",
       "   期末    3.666667\n",
       "H  期中    3.333333\n",
       "   期末    5.666667\n",
       "I  期中    4.666667\n",
       "   期末    7.333333\n",
       "J  期中    5.000000\n",
       "   期末    4.333333\n",
       "K  期中    1.666667\n",
       "   期末    1.333333\n",
       "dtype: float64"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.mean(axis= 1)  #  调整参数axis 计算行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "d517e6e9",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Guowei\\AppData\\Local\\Temp/ipykernel_3808/2782226835.py:1: FutureWarning: Using the level keyword in DataFrame and Series aggregations is deprecated and will be removed in a future version. Use groupby instead. df.median(level=1) should use df.groupby(level=1).median().\n",
      "  df2.mean(level = 1)  #  计算期中期末所有学生的平均分\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>期中</th>\n",
       "      <td>4.3</td>\n",
       "      <td>4.1</td>\n",
       "      <td>4.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>期末</th>\n",
       "      <td>3.8</td>\n",
       "      <td>3.8</td>\n",
       "      <td>5.1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Python  Math   En\n",
       "期中     4.3   4.1  4.1\n",
       "期末     3.8   3.8  5.1"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.mean(level = 1)  #  计算期中期末所有学生的平均分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "315a51ff",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'df2' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_12260/3130741236.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlevel\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m  \u001b[1;31m#  计算每位学生期中+期末的平均分\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m: name 'df2' is not defined"
     ]
    }
   ],
   "source": [
    "df2.mean(level = 0)  #  计算每位学生期中+期末的平均分"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "28b3f065",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据和统计方法"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "382abe63",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 统计指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "28e249da",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math  En\n",
       "Q       4     1   0\n",
       "W       6     9   7\n",
       "E       6     3   6\n",
       "R       0     5   7\n",
       "T       9     3   5\n",
       "Y       6     5   9\n",
       "U       8     6   7\n",
       "I       7     5   9\n",
       "O       1     5   8\n",
       "P       0     5   1\n",
       "A       7     0   1\n",
       "S       3     5   4\n",
       "D       3     5   1\n",
       "F       7     1   9\n",
       "G       7     3   0\n",
       "H       0     5   7\n",
       "J       8     6   1\n",
       "K       2     4   1\n",
       "L       2     3   6\n",
       "Z       0     1   4"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(np.random.randint(0,10,size = (20,3)),\n",
    "                 columns=['Python','Math','En'],\n",
    "                 index = list('QWERTYUIOPASDFGHJKLZ'))\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "a7cf288d",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "Q       4     1  0.0\n",
       "W       6     9  7.0\n",
       "E       6     3  6.0\n",
       "R       0     5  7.0\n",
       "T       9     3  5.0\n",
       "Y       6     5  9.0\n",
       "U       8     6  NaN\n",
       "I       7     5  9.0\n",
       "O       1     5  8.0\n",
       "P       0     5  1.0\n",
       "A       7     0  1.0\n",
       "S       3     5  4.0\n",
       "D       3     5  1.0\n",
       "F       7     1  9.0\n",
       "G       7     3  0.0\n",
       "H       0     5  7.0\n",
       "J       8     6  1.0\n",
       "K       2     4  1.0\n",
       "L       2     3  6.0\n",
       "Z       0     1  4.0"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[6,2] = np.NAN  #  给指定位置设置空值\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "c92edfe0",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python    20\n",
       "Math      20\n",
       "En        19\n",
       "dtype: int64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.count()  #  count统计非空数据的数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "7c1119e7",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python    4.300000\n",
       "Math      4.000000\n",
       "En        4.526316\n",
       "dtype: float64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "Python    5.0\n",
       "Math      5.0\n",
       "En        5.0\n",
       "dtype: float64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(df.mean(),df.median())  #  mean平均值  median中位数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "0341a28d",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python    0.0\n",
       "Math      0.0\n",
       "En        0.0\n",
       "dtype: float64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "Python    9.0\n",
       "Math      9.0\n",
       "En        9.0\n",
       "dtype: float64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(df.min(),df.max())  #  最小值 最大值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "a3abc6c9",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "df['Python'].unique()  #  去除重复数据\n",
    "df1 = df['Python'].unique() "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "3358cc8e",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<bound method IndexOpsMixin.value_counts of Q    4\n",
       "W    6\n",
       "E    5\n",
       "R    2\n",
       "T    0\n",
       "Y    7\n",
       "U    7\n",
       "I    8\n",
       "O    2\n",
       "P    0\n",
       "A    3\n",
       "S    5\n",
       "D    5\n",
       "F    1\n",
       "G    0\n",
       "H    4\n",
       "J    4\n",
       "K    3\n",
       "L    1\n",
       "Z    0\n",
       "Name: Math, dtype: int32>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['Math'].value_counts  #  统计出现的频次"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "4d007c22",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.00</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.25</th>\n",
       "      <td>1.8</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.50</th>\n",
       "      <td>5.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.75</th>\n",
       "      <td>7.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1.00</th>\n",
       "      <td>9.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Python  Math   En\n",
       "0.00     0.0   0.0  0.0\n",
       "0.25     1.8   3.0  1.0\n",
       "0.50     5.0   5.0  5.0\n",
       "0.75     7.0   5.0  7.0\n",
       "1.00     9.0   9.0  9.0"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.quantile(q = 0.5)  #  获取中位数\n",
    "df.quantile(q = [0,0.25,0.5,0.75,1]).round(1)  #  获取百分位数（最小值、四等分、中位数、四分之三等分、最大值）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "84c7ca08",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>20.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>19.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>4.3</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>3.1</td>\n",
       "      <td>2.2</td>\n",
       "      <td>3.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.8</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>5.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>7.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>9.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Python  Math    En\n",
       "count    20.0  20.0  19.0\n",
       "mean      4.3   4.0   4.5\n",
       "std       3.1   2.2   3.3\n",
       "min       0.0   0.0   0.0\n",
       "25%       1.8   3.0   1.0\n",
       "50%       5.0   5.0   5.0\n",
       "75%       7.0   5.0   7.0\n",
       "max       9.0   9.0   9.0"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe().round(1)  #  获取非空数据计数、平均、标准差、最小值、四等分、中位数、四分之三等分、最大值"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "85cbf2e3",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 索引标签、位置获取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "9b61fb4a",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "Q       4     1  0.0\n",
       "W       6     9  7.0\n",
       "E       6     3  6.0\n",
       "R       0     5  7.0\n",
       "T       9     3  5.0\n",
       "Y       6     5  9.0\n",
       "U       8     6  NaN\n",
       "I       7     5  9.0\n",
       "O       1     5  8.0\n",
       "P       0     5  1.0\n",
       "A       7     0  1.0\n",
       "S       3     5  4.0\n",
       "D       3     5  1.0\n",
       "F       7     1  9.0\n",
       "G       7     3  0.0\n",
       "H       0     5  7.0\n",
       "J       8     6  1.0\n",
       "K       2     4  1.0\n",
       "L       2     3  6.0\n",
       "Z       0     1  4.0"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "053fc51e",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['Python'].argmax()  #  查找最大值，并返回索引位置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "37210d97",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['En'].argmin()   #  查找最小值，并返回索引位置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "3d24fb61",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python    T\n",
       "Math      W\n",
       "En        Y\n",
       "dtype: object"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.idxmax()  #  返回最大值的标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "4ff815ec",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python    R\n",
       "Math      A\n",
       "En        Q\n",
       "dtype: object"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.idxmin()  #  返回最小值的标签"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cda5cf1e",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### 更多的统计指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "3954eec5",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>16</td>\n",
       "      <td>13</td>\n",
       "      <td>13.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>16</td>\n",
       "      <td>18</td>\n",
       "      <td>20.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>25</td>\n",
       "      <td>21</td>\n",
       "      <td>25.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>31</td>\n",
       "      <td>26</td>\n",
       "      <td>34.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>39</td>\n",
       "      <td>32</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>46</td>\n",
       "      <td>37</td>\n",
       "      <td>43.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>47</td>\n",
       "      <td>42</td>\n",
       "      <td>51.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>47</td>\n",
       "      <td>47</td>\n",
       "      <td>52.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>54</td>\n",
       "      <td>47</td>\n",
       "      <td>53.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>57</td>\n",
       "      <td>52</td>\n",
       "      <td>57.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>60</td>\n",
       "      <td>57</td>\n",
       "      <td>58.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>67</td>\n",
       "      <td>58</td>\n",
       "      <td>67.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>74</td>\n",
       "      <td>61</td>\n",
       "      <td>67.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>74</td>\n",
       "      <td>66</td>\n",
       "      <td>74.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>82</td>\n",
       "      <td>72</td>\n",
       "      <td>75.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>84</td>\n",
       "      <td>76</td>\n",
       "      <td>76.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>86</td>\n",
       "      <td>79</td>\n",
       "      <td>82.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>86</td>\n",
       "      <td>80</td>\n",
       "      <td>86.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math    En\n",
       "Q       4     1   0.0\n",
       "W      10    10   7.0\n",
       "E      16    13  13.0\n",
       "R      16    18  20.0\n",
       "T      25    21  25.0\n",
       "Y      31    26  34.0\n",
       "U      39    32   NaN\n",
       "I      46    37  43.0\n",
       "O      47    42  51.0\n",
       "P      47    47  52.0\n",
       "A      54    47  53.0\n",
       "S      57    52  57.0\n",
       "D      60    57  58.0\n",
       "F      67    58  67.0\n",
       "G      74    61  67.0\n",
       "H      74    66  74.0\n",
       "J      82    72  75.0\n",
       "K      84    76  76.0\n",
       "L      86    79  82.0\n",
       "Z      86    80  86.0"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.cumsum()  #  累加和 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "e1a783e9",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>24</td>\n",
       "      <td>9</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>144</td>\n",
       "      <td>27</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0</td>\n",
       "      <td>135</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>0</td>\n",
       "      <td>405</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>0</td>\n",
       "      <td>2025</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>0</td>\n",
       "      <td>12150</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0</td>\n",
       "      <td>60750</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>0</td>\n",
       "      <td>303750</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>0</td>\n",
       "      <td>1518750</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python     Math   En\n",
       "Q       4        1  0.0\n",
       "W      24        9  0.0\n",
       "E     144       27  0.0\n",
       "R       0      135  0.0\n",
       "T       0      405  0.0\n",
       "Y       0     2025  0.0\n",
       "U       0    12150  NaN\n",
       "I       0    60750  0.0\n",
       "O       0   303750  0.0\n",
       "P       0  1518750  0.0\n",
       "A       0        0  0.0\n",
       "S       0        0  0.0\n",
       "D       0        0  0.0\n",
       "F       0        0  0.0\n",
       "G       0        0  0.0\n",
       "H       0        0  0.0\n",
       "J       0        0  0.0\n",
       "K       0        0  0.0\n",
       "L       0        0  0.0\n",
       "Z       0        0  0.0"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.cumprod() #  累乘和"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "ebc47fc2",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "Q       4     1  0.0\n",
       "W       4     1  0.0\n",
       "E       4     1  0.0\n",
       "R       0     1  0.0\n",
       "T       0     1  0.0\n",
       "Y       0     1  0.0\n",
       "U       0     1  NaN\n",
       "I       0     1  0.0\n",
       "O       0     1  0.0\n",
       "P       0     1  0.0\n",
       "A       0     0  0.0\n",
       "S       0     0  0.0\n",
       "D       0     0  0.0\n",
       "F       0     0  0.0\n",
       "G       0     0  0.0\n",
       "H       0     0  0.0\n",
       "J       0     0  0.0\n",
       "K       0     0  0.0\n",
       "L       0     0  0.0\n",
       "Z       0     0  0.0"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.cummin()  #  累计最小值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "cfa8727d",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "Q       4     1  0.0\n",
       "W       6     9  7.0\n",
       "E       6     9  7.0\n",
       "R       6     9  7.0\n",
       "T       9     9  7.0\n",
       "Y       9     9  9.0\n",
       "U       9     9  NaN\n",
       "I       9     9  9.0\n",
       "O       9     9  9.0\n",
       "P       9     9  9.0\n",
       "A       9     9  9.0\n",
       "S       9     9  9.0\n",
       "D       9     9  9.0\n",
       "F       9     9  9.0\n",
       "G       9     9  9.0\n",
       "H       9     9  9.0\n",
       "J       9     9  9.0\n",
       "K       9     9  9.0\n",
       "L       9     9  9.0\n",
       "Z       9     9  9.0"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.cummax() # 累计最大值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "46ef2982",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python    3.130495\n",
       "Math      2.152110\n",
       "En        3.322790\n",
       "dtype: float64"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.std()  #  标准差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "ef4c7de2",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python     9.800000\n",
       "Math       4.631579\n",
       "En        11.040936\n",
       "dtype: float64"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.var()  # 方差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "b80cb0f9",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>2.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>0.0</td>\n",
       "      <td>-6.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>-6.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>9.0</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>-2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>-3.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>-6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>-1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>7.0</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>-4.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>4.0</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>-9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>-7.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>8.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>-6.0</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>-2.0</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>-2.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math   En\n",
       "Q     NaN   NaN  NaN\n",
       "W     2.0   8.0  7.0\n",
       "E     0.0  -6.0 -1.0\n",
       "R    -6.0   2.0  1.0\n",
       "T     9.0  -2.0 -2.0\n",
       "Y    -3.0   2.0  4.0\n",
       "U     2.0   1.0  NaN\n",
       "I    -1.0  -1.0  NaN\n",
       "O    -6.0   0.0 -1.0\n",
       "P    -1.0   0.0 -7.0\n",
       "A     7.0  -5.0  0.0\n",
       "S    -4.0   5.0  3.0\n",
       "D     0.0   0.0 -3.0\n",
       "F     4.0  -4.0  8.0\n",
       "G     0.0   2.0 -9.0\n",
       "H    -7.0   2.0  7.0\n",
       "J     8.0   1.0 -6.0\n",
       "K    -6.0  -2.0  0.0\n",
       "L     0.0  -1.0  5.0\n",
       "Z    -2.0  -2.0 -2.0"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.diff()  # 差分，当前数据减去上一个的差值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "585fb1f5",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>0.50</td>\n",
       "      <td>8.00</td>\n",
       "      <td>inf</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>0.00</td>\n",
       "      <td>-0.67</td>\n",
       "      <td>-0.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>-1.00</td>\n",
       "      <td>0.67</td>\n",
       "      <td>0.17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>inf</td>\n",
       "      <td>-0.40</td>\n",
       "      <td>-0.29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>-0.33</td>\n",
       "      <td>0.67</td>\n",
       "      <td>0.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>0.33</td>\n",
       "      <td>0.20</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>-0.12</td>\n",
       "      <td>-0.17</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>-0.86</td>\n",
       "      <td>0.00</td>\n",
       "      <td>-0.11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>-1.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>-0.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>inf</td>\n",
       "      <td>-1.00</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>-0.57</td>\n",
       "      <td>inf</td>\n",
       "      <td>3.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>-0.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>1.33</td>\n",
       "      <td>-0.80</td>\n",
       "      <td>8.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>0.00</td>\n",
       "      <td>2.00</td>\n",
       "      <td>-1.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>-1.00</td>\n",
       "      <td>0.67</td>\n",
       "      <td>inf</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>inf</td>\n",
       "      <td>0.20</td>\n",
       "      <td>-0.86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>-0.75</td>\n",
       "      <td>-0.33</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>0.00</td>\n",
       "      <td>-0.25</td>\n",
       "      <td>5.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>-1.00</td>\n",
       "      <td>-0.67</td>\n",
       "      <td>-0.33</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Math    En\n",
       "Q     NaN   NaN   NaN\n",
       "W    0.50  8.00   inf\n",
       "E    0.00 -0.67 -0.14\n",
       "R   -1.00  0.67  0.17\n",
       "T     inf -0.40 -0.29\n",
       "Y   -0.33  0.67  0.80\n",
       "U    0.33  0.20  0.00\n",
       "I   -0.12 -0.17  0.00\n",
       "O   -0.86  0.00 -0.11\n",
       "P   -1.00  0.00 -0.88\n",
       "A     inf -1.00  0.00\n",
       "S   -0.57   inf  3.00\n",
       "D    0.00  0.00 -0.75\n",
       "F    1.33 -0.80  8.00\n",
       "G    0.00  2.00 -1.00\n",
       "H   -1.00  0.67   inf\n",
       "J     inf  0.20 -0.86\n",
       "K   -0.75 -0.33  0.00\n",
       "L    0.00 -0.25  5.00\n",
       "Z   -1.00 -0.67 -0.33"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.pct_change().round(2)   #  计算百分比变化，当前数据对比上一条数据的百分比增长（当前数据-上条数据÷上条数据）"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d42f11be",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### 高级统计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "a2f4b044",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Python</th>\n",
       "      <td>9.800000</td>\n",
       "      <td>-0.157895</td>\n",
       "      <td>0.108187</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Math</th>\n",
       "      <td>-0.157895</td>\n",
       "      <td>4.631579</td>\n",
       "      <td>1.780702</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>En</th>\n",
       "      <td>0.108187</td>\n",
       "      <td>1.780702</td>\n",
       "      <td>11.040936</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Python      Math         En\n",
       "Python  9.800000 -0.157895   0.108187\n",
       "Math   -0.157895  4.631579   1.780702\n",
       "En      0.108187  1.780702  11.040936"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.cov()  #  协方差：自己和别人计算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "2f50081e",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python     9.800000\n",
       "Math       4.631579\n",
       "En        11.040936\n",
       "dtype: float64"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.var()  #  方差：是自己和自己计算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "617fa8ec",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.1578947368421054"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['Python'].cov(df['Math'])  #  协方差：指定对象计算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "19cc913d",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Python</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.023436</td>\n",
       "      <td>0.010539</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Math</th>\n",
       "      <td>-0.023436</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.248388</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>En</th>\n",
       "      <td>0.010539</td>\n",
       "      <td>0.248388</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Python      Math        En\n",
       "Python  1.000000 -0.023436  0.010539\n",
       "Math   -0.023436  1.000000  0.248388\n",
       "En      0.010539  0.248388  1.000000"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.corr()  #  相关性系数：-1 至 1 的范围，"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "5bd27ab1",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python    0.010539\n",
       "Math      0.248388\n",
       "En        1.000000\n",
       "dtype: float64"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.corrwith(df['En'])  #  指定列相关性系数"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a3272f2",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "33db6ae0",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>11</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>13</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>16</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0</td>\n",
       "      <td>18</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>2</td>\n",
       "      <td>18</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>1</td>\n",
       "      <td>19</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>2</td>\n",
       "      <td>14</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>13</td>\n",
       "      <td>17</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>15</td>\n",
       "      <td>6</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>19</td>\n",
       "      <td>10</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>18</td>\n",
       "      <td>14</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Tensorflow  Keras\n",
       "Q      11           7      5\n",
       "W       1           1      8\n",
       "E      13           1      2\n",
       "R       0           2      0\n",
       "T      16           8      4\n",
       "Y       7          19      0\n",
       "U       5           0     16\n",
       "I       0          18     19\n",
       "O       2          18     15\n",
       "P       1          19      6\n",
       "A       9           8      1\n",
       "S       2          14      4\n",
       "D      13          17      2\n",
       "F       3           5      0\n",
       "G       2           7     19\n",
       "H      15           6     15\n",
       "J       7           9      3\n",
       "K       1           6      2\n",
       "L      19          10     16\n",
       "Z      18          14      8"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(np.random.randint(0,20,size = (20,3)),\n",
    "                 columns=['Python','Tensorflow','Keras'],\n",
    "                 index = list('QWERTYUIOPASDFGHJKLZ'))\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "0ce3e715",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>18</td>\n",
       "      <td>14</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>16</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>2</td>\n",
       "      <td>14</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>11</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>1</td>\n",
       "      <td>19</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>2</td>\n",
       "      <td>18</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>19</td>\n",
       "      <td>10</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0</td>\n",
       "      <td>18</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>15</td>\n",
       "      <td>6</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>13</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>13</td>\n",
       "      <td>17</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Tensorflow  Keras\n",
       "Z      18          14      8\n",
       "Y       7          19      0\n",
       "W       1           1      8\n",
       "U       5           0     16\n",
       "T      16           8      4\n",
       "S       2          14      4\n",
       "R       0           2      0\n",
       "Q      11           7      5\n",
       "P       1          19      6\n",
       "O       2          18     15\n",
       "L      19          10     16\n",
       "K       1           6      2\n",
       "J       7           9      3\n",
       "I       0          18     19\n",
       "H      15           6     15\n",
       "G       2           7     19\n",
       "F       3           5      0\n",
       "E      13           1      2\n",
       "D      13          17      2\n",
       "A       9           8      1"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sort_index(axis = 0,ascending = False)  #  根据索引进行排序，ascending = False是降序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "d9a6d565",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>13</td>\n",
       "      <td>17</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>13</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>15</td>\n",
       "      <td>6</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0</td>\n",
       "      <td>18</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>19</td>\n",
       "      <td>10</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>2</td>\n",
       "      <td>18</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>1</td>\n",
       "      <td>19</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>11</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>2</td>\n",
       "      <td>14</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>16</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>18</td>\n",
       "      <td>14</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Tensorflow  Keras\n",
       "A       9           8      1\n",
       "D      13          17      2\n",
       "E      13           1      2\n",
       "F       3           5      0\n",
       "G       2           7     19\n",
       "H      15           6     15\n",
       "I       0          18     19\n",
       "J       7           9      3\n",
       "K       1           6      2\n",
       "L      19          10     16\n",
       "O       2          18     15\n",
       "P       1          19      6\n",
       "Q      11           7      5\n",
       "R       0           2      0\n",
       "S       2          14      4\n",
       "T      16           8      4\n",
       "U       5           0     16\n",
       "W       1           1      8\n",
       "Y       7          19      0\n",
       "Z      18          14      8"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sort_index(axis = 0,ascending = True)  #  根据索引进行排序，ascending = True是升序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "d6fc82b6",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0</td>\n",
       "      <td>18</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>1</td>\n",
       "      <td>19</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>2</td>\n",
       "      <td>18</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>2</td>\n",
       "      <td>14</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>11</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>13</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>13</td>\n",
       "      <td>17</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>15</td>\n",
       "      <td>6</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>16</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>18</td>\n",
       "      <td>14</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>19</td>\n",
       "      <td>10</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Tensorflow  Keras\n",
       "R       0           2      0\n",
       "I       0          18     19\n",
       "P       1          19      6\n",
       "W       1           1      8\n",
       "K       1           6      2\n",
       "O       2          18     15\n",
       "G       2           7     19\n",
       "S       2          14      4\n",
       "F       3           5      0\n",
       "U       5           0     16\n",
       "J       7           9      3\n",
       "Y       7          19      0\n",
       "A       9           8      1\n",
       "Q      11           7      5\n",
       "E      13           1      2\n",
       "D      13          17      2\n",
       "H      15           6     15\n",
       "T      16           8      4\n",
       "Z      18          14      8\n",
       "L      19          10     16"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sort_values(by = 'Python',ascending=True)  #  指定列进行排序，ascending = True是升序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "8205481a",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>I</th>\n",
       "      <td>0</td>\n",
       "      <td>18</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>W</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P</th>\n",
       "      <td>1</td>\n",
       "      <td>19</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>G</th>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>2</td>\n",
       "      <td>14</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O</th>\n",
       "      <td>2</td>\n",
       "      <td>18</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>U</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>J</th>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>11</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>13</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>13</td>\n",
       "      <td>17</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>15</td>\n",
       "      <td>6</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>16</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>18</td>\n",
       "      <td>14</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>19</td>\n",
       "      <td>10</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Tensorflow  Keras\n",
       "R       0           2      0\n",
       "I       0          18     19\n",
       "W       1           1      8\n",
       "K       1           6      2\n",
       "P       1          19      6\n",
       "G       2           7     19\n",
       "S       2          14      4\n",
       "O       2          18     15\n",
       "F       3           5      0\n",
       "U       5           0     16\n",
       "J       7           9      3\n",
       "Y       7          19      0\n",
       "A       9           8      1\n",
       "Q      11           7      5\n",
       "E      13           1      2\n",
       "D      13          17      2\n",
       "H      15           6     15\n",
       "T      16           8      4\n",
       "Z      18          14      8\n",
       "L      19          10     16"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sort_values(by = ['Python','Tensorflow'],ascending=True)  #  先根据Python进行排序，如果相等在根据Tensorflow进行排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "e4db61eb",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>19</td>\n",
       "      <td>10</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z</th>\n",
       "      <td>18</td>\n",
       "      <td>14</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>T</th>\n",
       "      <td>16</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>H</th>\n",
       "      <td>15</td>\n",
       "      <td>6</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>13</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Tensorflow  Keras\n",
       "L      19          10     16\n",
       "Z      18          14      8\n",
       "T      16           8      4\n",
       "H      15           6     15\n",
       "E      13           1      2"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.nlargest(n = 5,columns = 'Python')  #  获取指定列，最大的5个数值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "d7ce7dc9",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Tensorflow</th>\n",
       "      <th>Keras</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y</th>\n",
       "      <td>7</td>\n",
       "      <td>19</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>E</th>\n",
       "      <td>13</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Python  Tensorflow  Keras\n",
       "R       0           2      0\n",
       "Y       7          19      0\n",
       "F       3           5      0\n",
       "A       9           8      1\n",
       "E      13           1      2"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.nsmallest( 5,columns = 'Keras')  #  获取指定列，最小的5个数值"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1ebb6dfc",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 分箱操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "5a3c61fb",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>37</td>\n",
       "      <td>54</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>81</td>\n",
       "      <td>29</td>\n",
       "      <td>47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>104</td>\n",
       "      <td>38</td>\n",
       "      <td>91</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>22</td>\n",
       "      <td>81</td>\n",
       "      <td>121</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>96</td>\n",
       "      <td>65</td>\n",
       "      <td>120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>37</td>\n",
       "      <td>81</td>\n",
       "      <td>133</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>102</td>\n",
       "      <td>56</td>\n",
       "      <td>143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>112</td>\n",
       "      <td>134</td>\n",
       "      <td>93</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>13</td>\n",
       "      <td>150</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>82</td>\n",
       "      <td>109</td>\n",
       "      <td>56</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    Python  Math   En\n",
       "0       37    54   13\n",
       "1       81    29   47\n",
       "2      104    38   91\n",
       "3       22    81  121\n",
       "4       96    65  120\n",
       "..     ...   ...  ...\n",
       "95      37    81  133\n",
       "96     102    56  143\n",
       "97     112   134   93\n",
       "98      13   150    8\n",
       "99      82   109   56\n",
       "\n",
       "[100 rows x 3 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(np.random.randint(0,151,size = (100,3)),\n",
    "                 columns=['Python','Math','En'])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "be6ff4b8",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     不及格\n",
       "1      中等\n",
       "2      中等\n",
       "3     不及格\n",
       "4      中等\n",
       "     ... \n",
       "95    不及格\n",
       "96     中等\n",
       "97     中等\n",
       "98    不及格\n",
       "99     中等\n",
       "Name: Python, Length: 100, dtype: category\n",
       "Categories (4, object): ['不及格' < '及格' < '中等' < '优秀']"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  等宽， pd.cut对数据进行分箱操作（离散）对连续数据进行分类离散\n",
    "pd.cut(df.Python,bins =  4 ,  #  bins =  4 等宽分四段\n",
    "       labels=['不及格','及格','中等','优秀'],  #  labels= 指定标签\n",
    "       right = True)  #  rigth = True表示区间，闭区间"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "baaabdf4",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     不及格\n",
       "1      及格\n",
       "2      中等\n",
       "3      极差\n",
       "4      中等\n",
       "     ... \n",
       "95    不及格\n",
       "96     中等\n",
       "97     中等\n",
       "98     极差\n",
       "99     及格\n",
       "Name: Python, Length: 100, dtype: category\n",
       "Categories (5, object): ['极差' < '不及格' < '及格' < '中等' < '优秀']"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.cut(df.Python,\n",
    "       bins =[0,30,60,90,120,150],  #  指定分段层次\n",
    "      labels = ['极差','不及格','及格','中等','优秀'])  #  labels= 指定标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "685246a8",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "      <th>登记</th>\n",
       "      <th>等级</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>37</td>\n",
       "      <td>54</td>\n",
       "      <td>13</td>\n",
       "      <td>不及格</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>81</td>\n",
       "      <td>29</td>\n",
       "      <td>47</td>\n",
       "      <td>及格</td>\n",
       "      <td>及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>104</td>\n",
       "      <td>38</td>\n",
       "      <td>91</td>\n",
       "      <td>中等</td>\n",
       "      <td>中等</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>22</td>\n",
       "      <td>81</td>\n",
       "      <td>121</td>\n",
       "      <td>极差</td>\n",
       "      <td>极差</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>96</td>\n",
       "      <td>65</td>\n",
       "      <td>120</td>\n",
       "      <td>中等</td>\n",
       "      <td>中等</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>37</td>\n",
       "      <td>81</td>\n",
       "      <td>133</td>\n",
       "      <td>不及格</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>102</td>\n",
       "      <td>56</td>\n",
       "      <td>143</td>\n",
       "      <td>中等</td>\n",
       "      <td>中等</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>112</td>\n",
       "      <td>134</td>\n",
       "      <td>93</td>\n",
       "      <td>中等</td>\n",
       "      <td>中等</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>13</td>\n",
       "      <td>150</td>\n",
       "      <td>8</td>\n",
       "      <td>极差</td>\n",
       "      <td>极差</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>82</td>\n",
       "      <td>109</td>\n",
       "      <td>56</td>\n",
       "      <td>及格</td>\n",
       "      <td>及格</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    Python  Math   En   登记   等级\n",
       "0       37    54   13  不及格  不及格\n",
       "1       81    29   47   及格   及格\n",
       "2      104    38   91   中等   中等\n",
       "3       22    81  121   极差   极差\n",
       "4       96    65  120   中等   中等\n",
       "..     ...   ...  ...  ...  ...\n",
       "95      37    81  133  不及格  不及格\n",
       "96     102    56  143   中等   中等\n",
       "97     112   134   93   中等   中等\n",
       "98      13   150    8   极差   极差\n",
       "99      82   109   56   及格   及格\n",
       "\n",
       "[100 rows x 5 columns]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['等级'] = pd.cut(df.Python,  #  为df数据增加一列“等级”\n",
    "       bins =[0,30,60,90,120,150],  #  指定分段层次\n",
    "      labels = ['极差','不及格','及格','中等','优秀'])  #  labels= 指定标签\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "21f855ea",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "中等     28\n",
       "不及格    25\n",
       "及格     25\n",
       "优秀     22\n",
       "Name: Python, dtype: int64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  等频，对每个层次平均分（离散）\n",
    "pd.qcut(df.Python,q = 4,  #  q = 4分四段\n",
    "       labels=['不及格','及格','中等','优秀']).value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fdaf3925",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 分组聚合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "63ee21b2",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>男</td>\n",
       "      <td>7</td>\n",
       "      <td>78</td>\n",
       "      <td>58</td>\n",
       "      <td>125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>男</td>\n",
       "      <td>8</td>\n",
       "      <td>3</td>\n",
       "      <td>132</td>\n",
       "      <td>49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>男</td>\n",
       "      <td>4</td>\n",
       "      <td>144</td>\n",
       "      <td>86</td>\n",
       "      <td>150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>男</td>\n",
       "      <td>5</td>\n",
       "      <td>112</td>\n",
       "      <td>63</td>\n",
       "      <td>111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>女</td>\n",
       "      <td>7</td>\n",
       "      <td>54</td>\n",
       "      <td>41</td>\n",
       "      <td>85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>295</th>\n",
       "      <td>男</td>\n",
       "      <td>2</td>\n",
       "      <td>81</td>\n",
       "      <td>121</td>\n",
       "      <td>85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>296</th>\n",
       "      <td>女</td>\n",
       "      <td>4</td>\n",
       "      <td>30</td>\n",
       "      <td>145</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>297</th>\n",
       "      <td>女</td>\n",
       "      <td>3</td>\n",
       "      <td>63</td>\n",
       "      <td>29</td>\n",
       "      <td>134</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298</th>\n",
       "      <td>男</td>\n",
       "      <td>6</td>\n",
       "      <td>74</td>\n",
       "      <td>110</td>\n",
       "      <td>52</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>299</th>\n",
       "      <td>男</td>\n",
       "      <td>6</td>\n",
       "      <td>61</td>\n",
       "      <td>44</td>\n",
       "      <td>124</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>300 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    sex  class  Python  Math   En\n",
       "0     男      7      78    58  125\n",
       "1     男      8       3   132   49\n",
       "2     男      4     144    86  150\n",
       "3     男      5     112    63  111\n",
       "4     女      7      54    41   85\n",
       "..   ..    ...     ...   ...  ...\n",
       "295   男      2      81   121   85\n",
       "296   女      4      30   145    3\n",
       "297   女      3      63    29  134\n",
       "298   男      6      74   110   52\n",
       "299   男      6      61    44  124\n",
       "\n",
       "[300 rows x 5 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(data = {'sex':np.random.randint(0,2,size = 300),\n",
    "                         'class':np.random.randint(1,9,size = 300),\n",
    "                         'Python':np.random.randint(0,151,size = 300),\n",
    "                         'Math':np.random.randint(1,151,size = 300),\n",
    "                         'En':np.random.randint(1,151,size = 300)})\n",
    "\n",
    "df['sex'] = df['sex'].map({0:'男',1:'女'})  #  map将0修改男，1修改女\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "88bde303",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "女\n",
      "    sex  class  Python  Math   En\n",
      "0     女      5     114    43   66\n",
      "1     女      3       0   124   63\n",
      "2     女      5      28    79  118\n",
      "3     女      8     116    21   13\n",
      "4     女      7     103    41   26\n",
      "..   ..    ...     ...   ...  ...\n",
      "294   女      1      52   113   73\n",
      "295   女      1      28   139   32\n",
      "296   女      1       9   119   15\n",
      "297   女      5     105    48   66\n",
      "298   女      2     122    95  108\n",
      "\n",
      "[155 rows x 5 columns]\n",
      "男\n",
      "    sex  class  Python  Math   En\n",
      "5     男      2      20    83  121\n",
      "6     男      2      81    37   86\n",
      "7     男      4     123   120    1\n",
      "9     男      3      34    61   78\n",
      "10    男      3     106   130   97\n",
      "..   ..    ...     ...   ...  ...\n",
      "285   男      4      37    78  108\n",
      "288   男      5       8   150    2\n",
      "291   男      8     113   100   13\n",
      "292   男      1      98    82  108\n",
      "299   男      8     123    73   16\n",
      "\n",
      "[145 rows x 5 columns]\n"
     ]
    }
   ],
   "source": [
    "#  单列分组\n",
    "for s,d in df.groupby(by = 'sex'):  #  groupby指定某列进行分组\n",
    "    print(s)  #  s是分组的名称\n",
    "    print(d)  #  d是分组的数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "9b8cb384",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('女', 1)\n",
      "    sex  class  Python  Math   En\n",
      "24    女      1     103   124   41\n",
      "25    女      1     121    49   29\n",
      "79    女      1      34   112  115\n",
      "81    女      1      67   112  123\n",
      "104   女      1      36    42  134\n",
      "106   女      1      41    36  136\n",
      "127   女      1      34    15   86\n",
      "134   女      1      90   122  110\n",
      "140   女      1      77    77   25\n",
      "147   女      1      33   124   65\n",
      "156   女      1      58   108  106\n",
      "167   女      1      47    32   38\n",
      "192   女      1     124   103  127\n",
      "202   女      1     117    32   36\n",
      "209   女      1       3    90  123\n",
      "222   女      1       9    12   79\n",
      "242   女      1     137   146    4\n",
      "265   女      1      29    73   77\n",
      "270   女      1     126     4   74\n",
      "279   女      1     136   103   93\n",
      "294   女      1      52   113   73\n",
      "295   女      1      28   139   32\n",
      "296   女      1       9   119   15\n",
      "('女', 2)\n",
      "    sex  class  Python  Math   En\n",
      "29    女      2     149    95   44\n",
      "45    女      2      18     6   28\n",
      "49    女      2      61    98   67\n",
      "51    女      2      43   118   33\n",
      "82    女      2      19   129  143\n",
      "83    女      2      91   136   88\n",
      "103   女      2     126     1  122\n",
      "133   女      2     120     5   66\n",
      "135   女      2      97   109   60\n",
      "172   女      2      18    29  102\n",
      "173   女      2     104    92   45\n",
      "183   女      2      95     1    9\n",
      "189   女      2     144    87   43\n",
      "216   女      2      51    86   43\n",
      "257   女      2      85    79   10\n",
      "262   女      2      89   106   92\n",
      "284   女      2     115   143   83\n",
      "286   女      2      91     1  105\n",
      "290   女      2     109    69    9\n",
      "298   女      2     122    95  108\n",
      "('女', 3)\n",
      "    sex  class  Python  Math   En\n",
      "1     女      3       0   124   63\n",
      "8     女      3      40    69   52\n",
      "17    女      3      80    41   19\n",
      "57    女      3      65    81  135\n",
      "78    女      3      86    39  121\n",
      "128   女      3      17     7  101\n",
      "136   女      3     126    44  120\n",
      "185   女      3     146    64  133\n",
      "206   女      3      97    58  131\n",
      "214   女      3      12    47  107\n",
      "249   女      3      10    54   14\n",
      "280   女      3      10    21  148\n",
      "('女', 4)\n",
      "    sex  class  Python  Math   En\n",
      "12    女      4     147   126    4\n",
      "13    女      4     139    95   51\n",
      "39    女      4     105    72   85\n",
      "41    女      4     127    27  140\n",
      "52    女      4      28     4  124\n",
      "102   女      4      24    42  113\n",
      "118   女      4      97    98   96\n",
      "126   女      4      69   116  121\n",
      "142   女      4      32    43   39\n",
      "148   女      4      80   123   36\n",
      "150   女      4      59    53   14\n",
      "154   女      4      70    20  145\n",
      "168   女      4     121   114   62\n",
      "188   女      4      27   107   95\n",
      "230   女      4     134     8   80\n",
      "231   女      4     130   135   63\n",
      "236   女      4      29   130   59\n",
      "240   女      4      15   143  140\n",
      "261   女      4      85   131   83\n",
      "('女', 5)\n",
      "    sex  class  Python  Math   En\n",
      "0     女      5     114    43   66\n",
      "2     女      5      28    79  118\n",
      "32    女      5     128     4  110\n",
      "46    女      5      20    10   18\n",
      "64    女      5      17    99   34\n",
      "73    女      5      25    15  113\n",
      "86    女      5     101   101   23\n",
      "89    女      5      87   106   13\n",
      "100   女      5     135    48   62\n",
      "132   女      5      86   102   80\n",
      "138   女      5     139    32   47\n",
      "157   女      5     113    85   87\n",
      "169   女      5     135    57   64\n",
      "177   女      5     113    36   64\n",
      "178   女      5     115    28   76\n",
      "191   女      5      80    96  100\n",
      "194   女      5     149   102   96\n",
      "217   女      5      78   148   16\n",
      "233   女      5       3    73    3\n",
      "254   女      5     101    86   82\n",
      "266   女      5     150   117  147\n",
      "297   女      5     105    48   66\n",
      "('女', 6)\n",
      "    sex  class  Python  Math   En\n",
      "37    女      6     133    77  140\n",
      "38    女      6      72    59  145\n",
      "44    女      6     131    10   94\n",
      "61    女      6     141    31  132\n",
      "84    女      6     128    79   82\n",
      "109   女      6      15    97  129\n",
      "110   女      6     106    65   95\n",
      "111   女      6     142     9   37\n",
      "120   女      6     102    17   21\n",
      "143   女      6     116   147  108\n",
      "160   女      6     107    10   24\n",
      "198   女      6      65    35  135\n",
      "220   女      6      13    51   52\n",
      "223   女      6      53    33  139\n",
      "250   女      6      37    96   13\n",
      "256   女      6      40    87  103\n",
      "287   女      6     109     1   92\n",
      "293   女      6     134   109   26\n",
      "('女', 7)\n",
      "    sex  class  Python  Math   En\n",
      "4     女      7     103    41   26\n",
      "18    女      7     118   133  142\n",
      "28    女      7      77    74   55\n",
      "30    女      7      97    61  138\n",
      "62    女      7     147    56   83\n",
      "112   女      7      72    20  125\n",
      "115   女      7      18     1  135\n",
      "131   女      7     102    40   79\n",
      "146   女      7      22    12  143\n",
      "171   女      7      26    51   49\n",
      "174   女      7     107    45  123\n",
      "176   女      7     101   127  134\n",
      "190   女      7     130    19   41\n",
      "203   女      7      85    91  105\n",
      "225   女      7      57    58   57\n",
      "227   女      7      67   102   20\n",
      "228   女      7      37   126   53\n",
      "238   女      7     123    27   96\n",
      "275   女      7      83    72   96\n",
      "276   女      7     133    64   60\n",
      "281   女      7      41   133   78\n",
      "('女', 8)\n",
      "    sex  class  Python  Math   En\n",
      "3     女      8     116    21   13\n",
      "34    女      8      21    59   84\n",
      "48    女      8     129   140  131\n",
      "54    女      8      80    61  143\n",
      "68    女      8     128    16  107\n",
      "69    女      8      57   106  132\n",
      "87    女      8      74    59  138\n",
      "88    女      8     139    95   22\n",
      "92    女      8      73    19   33\n",
      "125   女      8     118    83  107\n",
      "144   女      8      45    19   40\n",
      "163   女      8     123    35   82\n",
      "184   女      8      92   108  128\n",
      "204   女      8      57     8   12\n",
      "205   女      8      50    70   45\n",
      "226   女      8      69   148  132\n",
      "251   女      8     150    57   69\n",
      "259   女      8     125   128  141\n",
      "282   女      8     133    66   85\n",
      "289   女      8     138    46  123\n",
      "('男', 1)\n",
      "    sex  class  Python  Math   En\n",
      "20    男      1       0     3  142\n",
      "141   男      1      53   118  137\n",
      "151   男      1      73    97   60\n",
      "161   男      1      18    24   91\n",
      "186   男      1      98    79  132\n",
      "215   男      1     128    16  149\n",
      "237   男      1      87    67   71\n",
      "253   男      1      30    65  122\n",
      "292   男      1      98    82  108\n",
      "('男', 2)\n",
      "    sex  class  Python  Math   En\n",
      "5     男      2      20    83  121\n",
      "6     男      2      81    37   86\n",
      "21    男      2      29   131  148\n",
      "22    男      2      16    29   34\n",
      "26    男      2      54    10   83\n",
      "42    男      2     137   115   49\n",
      "53    男      2     126   136   22\n",
      "56    男      2     121    68   54\n",
      "63    男      2      15   132   15\n",
      "70    男      2      28     4   42\n",
      "94    男      2      37   148   38\n",
      "107   男      2     102    75   59\n",
      "108   男      2      84   112  105\n",
      "123   男      2      26     2  131\n",
      "155   男      2     124    49   96\n",
      "179   男      2     119     3   22\n",
      "181   男      2      16    12   88\n",
      "187   男      2       5   122  102\n",
      "197   男      2      50   147   95\n",
      "('男', 3)\n",
      "    sex  class  Python  Math   En\n",
      "9     男      3      34    61   78\n",
      "10    男      3     106   130   97\n",
      "27    男      3      49    24   44\n",
      "60    男      3     126    36  133\n",
      "76    男      3      88    63  142\n",
      "95    男      3     114   120  101\n",
      "152   男      3      46    65   68\n",
      "153   男      3      87    88  128\n",
      "159   男      3      76    44  119\n",
      "165   男      3       1    19  111\n",
      "175   男      3     142    75   11\n",
      "180   男      3      24   137   30\n",
      "195   男      3      59    41   25\n",
      "207   男      3      85   134  133\n",
      "210   男      3     130    78   48\n",
      "219   男      3      40    14   30\n",
      "229   男      3       7    36  114\n",
      "239   男      3     138   135   67\n",
      "245   男      3     121    12   76\n",
      "247   男      3     150     1   46\n",
      "271   男      3      54   150   85\n",
      "283   男      3      13    66   14\n",
      "('男', 4)\n",
      "    sex  class  Python  Math   En\n",
      "7     男      4     123   120    1\n",
      "77    男      4     116    11   46\n",
      "97    男      4       9     4   26\n",
      "98    男      4      96   131   80\n",
      "105   男      4     101    78   37\n",
      "114   男      4      99   150   40\n",
      "122   男      4      44   127  146\n",
      "130   男      4      53   130   62\n",
      "211   男      4     111    23  106\n",
      "212   男      4       8   139  125\n",
      "248   男      4      52   130  131\n",
      "255   男      4     128    42   63\n",
      "260   男      4      62    55    8\n",
      "263   男      4       4    56  120\n",
      "264   男      4     148    98   85\n",
      "285   男      4      37    78  108\n",
      "('男', 5)\n",
      "    sex  class  Python  Math   En\n",
      "11    男      5      79    42   34\n",
      "14    男      5      97    83   86\n",
      "23    男      5      14   117   45\n",
      "36    男      5      32     8   77\n",
      "40    男      5      51    51   35\n",
      "59    男      5      74    65  130\n",
      "72    男      5      40    40   39\n",
      "74    男      5     119     4  129\n",
      "75    男      5       5    70   13\n",
      "85    男      5     110    89   34\n",
      "96    男      5      40    85  102\n",
      "116   男      5      88   139   81\n",
      "158   男      5      20   130  123\n",
      "164   男      5     141    12   81\n",
      "182   男      5     114   101   59\n",
      "193   男      5      73    33   55\n",
      "243   男      5      83    24   37\n",
      "274   男      5     149   129  105\n",
      "288   男      5       8   150    2\n",
      "('男', 6)\n",
      "    sex  class  Python  Math   En\n",
      "16    男      6      23    89   67\n",
      "43    男      6      53   101  120\n",
      "50    男      6      73   126    9\n",
      "58    男      6     101    93   65\n",
      "80    男      6     136   106  130\n",
      "117   男      6     149    63   79\n",
      "121   男      6      52    22  136\n",
      "137   男      6     103    14    5\n",
      "170   男      6     147   141   55\n",
      "196   男      6      25    96   99\n",
      "200   男      6      72    45    4\n",
      "201   男      6       1    42  106\n",
      "218   男      6     129   148   52\n",
      "221   男      6     112     8   67\n",
      "232   男      6      58   111   35\n",
      "235   男      6      70    35   62\n",
      "252   男      6       8    58  108\n",
      "267   男      6      82    52  106\n",
      "269   男      6      19    21   78\n",
      "('男', 7)\n",
      "    sex  class  Python  Math   En\n",
      "35    男      7      95   134   16\n",
      "65    男      7     133    79   64\n",
      "66    男      7      79   135   88\n",
      "71    男      7     116    26  127\n",
      "90    男      7      23    65  100\n",
      "93    男      7      26    63   97\n",
      "101   男      7     107    98   54\n",
      "124   男      7      54    38   11\n",
      "139   男      7     111     8   61\n",
      "162   男      7      32    23  104\n",
      "199   男      7     129   116   40\n",
      "208   男      7     129   116  148\n",
      "213   男      7      95   145   24\n",
      "234   男      7     146    97   56\n",
      "241   男      7      84   118   56\n",
      "246   男      7     102    66   86\n",
      "272   男      7      23    51   50\n",
      "273   男      7      21   130   75\n",
      "('男', 8)\n",
      "    sex  class  Python  Math   En\n",
      "15    男      8     112   121  147\n",
      "19    男      8      81    99   44\n",
      "31    男      8     135   138  141\n",
      "33    男      8       3    94  105\n",
      "47    男      8      39    89   51\n",
      "55    男      8      58    59   13\n",
      "67    男      8      85    12   54\n",
      "91    男      8     121    62   33\n",
      "99    男      8     126   144  106\n",
      "113   男      8     142    23   87\n",
      "119   男      8      24   132  126\n",
      "129   男      8     120    43    8\n",
      "145   男      8     103    19   16\n",
      "149   男      8      59   139   46\n",
      "166   男      8     145   147  105\n",
      "224   男      8      72    45  117\n",
      "244   男      8      80    66   47\n",
      "258   男      8      35    55   51\n",
      "268   男      8      75   130   81\n",
      "277   男      8      56   102   90\n",
      "278   男      8     107   120   58\n",
      "291   男      8     113   100   13\n",
      "299   男      8     123    73   16\n"
     ]
    }
   ],
   "source": [
    "#  多列分组，\n",
    "for name,group in df.groupby(by = ['sex','class']):  \n",
    "    print(name)\n",
    "    print(group)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "92307cdf",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "女      Python  Math\n",
      "0       114    43\n",
      "1         0   124\n",
      "2        28    79\n",
      "3       116    21\n",
      "4       103    41\n",
      "..      ...   ...\n",
      "294      52   113\n",
      "295      28   139\n",
      "296       9   119\n",
      "297     105    48\n",
      "298     122    95\n",
      "\n",
      "[155 rows x 2 columns]\n",
      "男      Python  Math\n",
      "5        20    83\n",
      "6        81    37\n",
      "7       123   120\n",
      "9        34    61\n",
      "10      106   130\n",
      "..      ...   ...\n",
      "285      37    78\n",
      "288       8   150\n",
      "291     113   100\n",
      "292      98    82\n",
      "299     123    73\n",
      "\n",
      "[145 rows x 2 columns]\n"
     ]
    }
   ],
   "source": [
    "for name ,group in df[['Python','Math']].groupby(df['sex']):  #  df[['Python','Math']]显示指定多列数据，或者单列['Math']\n",
    "    print(name,group)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "7e2a9ddc",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('女', 1)      Python  Math\n",
      "24      103   124\n",
      "25      121    49\n",
      "79       34   112\n",
      "81       67   112\n",
      "104      36    42\n",
      "106      41    36\n",
      "127      34    15\n",
      "134      90   122\n",
      "140      77    77\n",
      "147      33   124\n",
      "156      58   108\n",
      "167      47    32\n",
      "192     124   103\n",
      "202     117    32\n",
      "209       3    90\n",
      "222       9    12\n",
      "242     137   146\n",
      "265      29    73\n",
      "270     126     4\n",
      "279     136   103\n",
      "294      52   113\n",
      "295      28   139\n",
      "296       9   119\n",
      "('女', 2)      Python  Math\n",
      "29      149    95\n",
      "45       18     6\n",
      "49       61    98\n",
      "51       43   118\n",
      "82       19   129\n",
      "83       91   136\n",
      "103     126     1\n",
      "133     120     5\n",
      "135      97   109\n",
      "172      18    29\n",
      "173     104    92\n",
      "183      95     1\n",
      "189     144    87\n",
      "216      51    86\n",
      "257      85    79\n",
      "262      89   106\n",
      "284     115   143\n",
      "286      91     1\n",
      "290     109    69\n",
      "298     122    95\n",
      "('女', 3)      Python  Math\n",
      "1         0   124\n",
      "8        40    69\n",
      "17       80    41\n",
      "57       65    81\n",
      "78       86    39\n",
      "128      17     7\n",
      "136     126    44\n",
      "185     146    64\n",
      "206      97    58\n",
      "214      12    47\n",
      "249      10    54\n",
      "280      10    21\n",
      "('女', 4)      Python  Math\n",
      "12      147   126\n",
      "13      139    95\n",
      "39      105    72\n",
      "41      127    27\n",
      "52       28     4\n",
      "102      24    42\n",
      "118      97    98\n",
      "126      69   116\n",
      "142      32    43\n",
      "148      80   123\n",
      "150      59    53\n",
      "154      70    20\n",
      "168     121   114\n",
      "188      27   107\n",
      "230     134     8\n",
      "231     130   135\n",
      "236      29   130\n",
      "240      15   143\n",
      "261      85   131\n",
      "('女', 5)      Python  Math\n",
      "0       114    43\n",
      "2        28    79\n",
      "32      128     4\n",
      "46       20    10\n",
      "64       17    99\n",
      "73       25    15\n",
      "86      101   101\n",
      "89       87   106\n",
      "100     135    48\n",
      "132      86   102\n",
      "138     139    32\n",
      "157     113    85\n",
      "169     135    57\n",
      "177     113    36\n",
      "178     115    28\n",
      "191      80    96\n",
      "194     149   102\n",
      "217      78   148\n",
      "233       3    73\n",
      "254     101    86\n",
      "266     150   117\n",
      "297     105    48\n",
      "('女', 6)      Python  Math\n",
      "37      133    77\n",
      "38       72    59\n",
      "44      131    10\n",
      "61      141    31\n",
      "84      128    79\n",
      "109      15    97\n",
      "110     106    65\n",
      "111     142     9\n",
      "120     102    17\n",
      "143     116   147\n",
      "160     107    10\n",
      "198      65    35\n",
      "220      13    51\n",
      "223      53    33\n",
      "250      37    96\n",
      "256      40    87\n",
      "287     109     1\n",
      "293     134   109\n",
      "('女', 7)      Python  Math\n",
      "4       103    41\n",
      "18      118   133\n",
      "28       77    74\n",
      "30       97    61\n",
      "62      147    56\n",
      "112      72    20\n",
      "115      18     1\n",
      "131     102    40\n",
      "146      22    12\n",
      "171      26    51\n",
      "174     107    45\n",
      "176     101   127\n",
      "190     130    19\n",
      "203      85    91\n",
      "225      57    58\n",
      "227      67   102\n",
      "228      37   126\n",
      "238     123    27\n",
      "275      83    72\n",
      "276     133    64\n",
      "281      41   133\n",
      "('女', 8)      Python  Math\n",
      "3       116    21\n",
      "34       21    59\n",
      "48      129   140\n",
      "54       80    61\n",
      "68      128    16\n",
      "69       57   106\n",
      "87       74    59\n",
      "88      139    95\n",
      "92       73    19\n",
      "125     118    83\n",
      "144      45    19\n",
      "163     123    35\n",
      "184      92   108\n",
      "204      57     8\n",
      "205      50    70\n",
      "226      69   148\n",
      "251     150    57\n",
      "259     125   128\n",
      "282     133    66\n",
      "289     138    46\n",
      "('男', 1)      Python  Math\n",
      "20        0     3\n",
      "141      53   118\n",
      "151      73    97\n",
      "161      18    24\n",
      "186      98    79\n",
      "215     128    16\n",
      "237      87    67\n",
      "253      30    65\n",
      "292      98    82\n",
      "('男', 2)      Python  Math\n",
      "5        20    83\n",
      "6        81    37\n",
      "21       29   131\n",
      "22       16    29\n",
      "26       54    10\n",
      "42      137   115\n",
      "53      126   136\n",
      "56      121    68\n",
      "63       15   132\n",
      "70       28     4\n",
      "94       37   148\n",
      "107     102    75\n",
      "108      84   112\n",
      "123      26     2\n",
      "155     124    49\n",
      "179     119     3\n",
      "181      16    12\n",
      "187       5   122\n",
      "197      50   147\n",
      "('男', 3)      Python  Math\n",
      "9        34    61\n",
      "10      106   130\n",
      "27       49    24\n",
      "60      126    36\n",
      "76       88    63\n",
      "95      114   120\n",
      "152      46    65\n",
      "153      87    88\n",
      "159      76    44\n",
      "165       1    19\n",
      "175     142    75\n",
      "180      24   137\n",
      "195      59    41\n",
      "207      85   134\n",
      "210     130    78\n",
      "219      40    14\n",
      "229       7    36\n",
      "239     138   135\n",
      "245     121    12\n",
      "247     150     1\n",
      "271      54   150\n",
      "283      13    66\n",
      "('男', 4)      Python  Math\n",
      "7       123   120\n",
      "77      116    11\n",
      "97        9     4\n",
      "98       96   131\n",
      "105     101    78\n",
      "114      99   150\n",
      "122      44   127\n",
      "130      53   130\n",
      "211     111    23\n",
      "212       8   139\n",
      "248      52   130\n",
      "255     128    42\n",
      "260      62    55\n",
      "263       4    56\n",
      "264     148    98\n",
      "285      37    78\n",
      "('男', 5)      Python  Math\n",
      "11       79    42\n",
      "14       97    83\n",
      "23       14   117\n",
      "36       32     8\n",
      "40       51    51\n",
      "59       74    65\n",
      "72       40    40\n",
      "74      119     4\n",
      "75        5    70\n",
      "85      110    89\n",
      "96       40    85\n",
      "116      88   139\n",
      "158      20   130\n",
      "164     141    12\n",
      "182     114   101\n",
      "193      73    33\n",
      "243      83    24\n",
      "274     149   129\n",
      "288       8   150\n",
      "('男', 6)      Python  Math\n",
      "16       23    89\n",
      "43       53   101\n",
      "50       73   126\n",
      "58      101    93\n",
      "80      136   106\n",
      "117     149    63\n",
      "121      52    22\n",
      "137     103    14\n",
      "170     147   141\n",
      "196      25    96\n",
      "200      72    45\n",
      "201       1    42\n",
      "218     129   148\n",
      "221     112     8\n",
      "232      58   111\n",
      "235      70    35\n",
      "252       8    58\n",
      "267      82    52\n",
      "269      19    21\n",
      "('男', 7)      Python  Math\n",
      "35       95   134\n",
      "65      133    79\n",
      "66       79   135\n",
      "71      116    26\n",
      "90       23    65\n",
      "93       26    63\n",
      "101     107    98\n",
      "124      54    38\n",
      "139     111     8\n",
      "162      32    23\n",
      "199     129   116\n",
      "208     129   116\n",
      "213      95   145\n",
      "234     146    97\n",
      "241      84   118\n",
      "246     102    66\n",
      "272      23    51\n",
      "273      21   130\n",
      "('男', 8)      Python  Math\n",
      "15      112   121\n",
      "19       81    99\n",
      "31      135   138\n",
      "33        3    94\n",
      "47       39    89\n",
      "55       58    59\n",
      "67       85    12\n",
      "91      121    62\n",
      "99      126   144\n",
      "113     142    23\n",
      "119      24   132\n",
      "129     120    43\n",
      "145     103    19\n",
      "149      59   139\n",
      "166     145   147\n",
      "224      72    45\n",
      "244      80    66\n",
      "258      35    55\n",
      "268      75   130\n",
      "277      56   102\n",
      "278     107   120\n",
      "291     113   100\n",
      "299     123    73\n"
     ]
    }
   ],
   "source": [
    "for name ,group in df[['Python','Math']].groupby([df['sex'],df['class' ]]):  #  显示指定多列数据，且多列分组\n",
    "    print(name,group)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "c4ea902a",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "int32      class  Python  Math   En\n",
      "0        5     114    43   66\n",
      "1        3       0   124   63\n",
      "2        5      28    79  118\n",
      "3        8     116    21   13\n",
      "4        7     103    41   26\n",
      "..     ...     ...   ...  ...\n",
      "295      1      28   139   32\n",
      "296      1       9   119   15\n",
      "297      5     105    48   66\n",
      "298      2     122    95  108\n",
      "299      8     123    73   16\n",
      "\n",
      "[300 rows x 4 columns]\n",
      "object     sex\n",
      "0     女\n",
      "1     女\n",
      "2     女\n",
      "3     女\n",
      "4     女\n",
      "..   ..\n",
      "295   女\n",
      "296   女\n",
      "297   女\n",
      "298   女\n",
      "299   男\n",
      "\n",
      "[300 rows x 1 columns]\n"
     ]
    }
   ],
   "source": [
    "for name,group in df.groupby(df.dtypes,axis=1):  #  根据数据类型进行分组（由于是列分组所以要指定轴axis=1）\n",
    "    print(name,group)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "6670434b",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "category     sex  class\n",
      "0     女      5\n",
      "1     女      3\n",
      "2     女      5\n",
      "3     女      8\n",
      "4     女      7\n",
      "..   ..    ...\n",
      "295   女      1\n",
      "296   女      1\n",
      "297   女      5\n",
      "298   女      2\n",
      "299   男      8\n",
      "\n",
      "[300 rows x 2 columns]\n",
      "科目      Python  Math   En\n",
      "0       114    43   66\n",
      "1         0   124   63\n",
      "2        28    79  118\n",
      "3       116    21   13\n",
      "4       103    41   26\n",
      "..      ...   ...  ...\n",
      "295      28   139   32\n",
      "296       9   119   15\n",
      "297     105    48   66\n",
      "298     122    95  108\n",
      "299     123    73   16\n",
      "\n",
      "[300 rows x 3 columns]\n"
     ]
    }
   ],
   "source": [
    "#  自定义分组\n",
    "m = {'sex':'category','class':'category','Python':'科目','Math':'科目','En':'科目'}   #  声明一个字典\n",
    "for name,group in df.groupby(by = m, axis=1):   #   #  将sex、class划分为一个组，将Python、Math、En划分一个组\n",
    "    print(name,group)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a73919cd",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 分组聚合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "27667eb4",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>女</th>\n",
       "      <td>150</td>\n",
       "      <td>148</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>男</th>\n",
       "      <td>150</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     Python   En\n",
       "sex             \n",
       "女       150  148\n",
       "男       150  149"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by = 'sex').max() #  指定sex分组，并找出最大值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "61ffc7be",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "df.groupby(by = 'sex')[['Python','En']].max() #  指定sex分组，并找出最大值 ，并只显示指定科目"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "1712b5d0",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>65.7</td>\n",
       "      <td>82.0</td>\n",
       "      <td>75.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>87.4</td>\n",
       "      <td>74.2</td>\n",
       "      <td>65.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>57.4</td>\n",
       "      <td>54.1</td>\n",
       "      <td>95.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>79.9</td>\n",
       "      <td>83.5</td>\n",
       "      <td>81.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>91.9</td>\n",
       "      <td>68.9</td>\n",
       "      <td>67.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>91.3</td>\n",
       "      <td>56.3</td>\n",
       "      <td>87.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>83.1</td>\n",
       "      <td>64.4</td>\n",
       "      <td>87.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>95.8</td>\n",
       "      <td>67.2</td>\n",
       "      <td>88.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>65.0</td>\n",
       "      <td>61.2</td>\n",
       "      <td>112.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>62.6</td>\n",
       "      <td>74.5</td>\n",
       "      <td>73.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>76.8</td>\n",
       "      <td>69.5</td>\n",
       "      <td>77.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>74.4</td>\n",
       "      <td>85.8</td>\n",
       "      <td>74.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>70.4</td>\n",
       "      <td>72.2</td>\n",
       "      <td>66.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>74.4</td>\n",
       "      <td>72.2</td>\n",
       "      <td>72.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>83.6</td>\n",
       "      <td>83.8</td>\n",
       "      <td>69.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>87.6</td>\n",
       "      <td>87.5</td>\n",
       "      <td>67.6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Python  Math     En\n",
       "sex class                     \n",
       "女   1        65.7  82.0   75.7\n",
       "    2        87.4  74.2   65.0\n",
       "    3        57.4  54.1   95.3\n",
       "    4        79.9  83.5   81.6\n",
       "    5        91.9  68.9   67.5\n",
       "    6        91.3  56.3   87.1\n",
       "    7        83.1  64.4   87.5\n",
       "    8        95.8  67.2   88.4\n",
       "男   1        65.0  61.2  112.4\n",
       "    2        62.6  74.5   73.2\n",
       "    3        76.8  69.5   77.3\n",
       "    4        74.4  85.8   74.0\n",
       "    5        70.4  72.2   66.7\n",
       "    6        74.4  72.2   72.8\n",
       "    7        83.6  83.8   69.8\n",
       "    8        87.6  87.5   67.6"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by = ['sex' ,'class']).mean().round(1)  #  指定多组划分，求出平均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "074ade55",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "sex  class\n",
       "女    1        23\n",
       "     2        20\n",
       "     3        12\n",
       "     4        19\n",
       "     5        22\n",
       "     6        18\n",
       "     7        21\n",
       "     8        20\n",
       "男    1         9\n",
       "     2        19\n",
       "     3        22\n",
       "     4        16\n",
       "     5        19\n",
       "     6        19\n",
       "     7        18\n",
       "     8        23\n",
       "dtype: int64"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by = ['sex','class']).size()  #  统计各个分组男女人数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "6db337ee",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th colspan=\"8\" halign=\"left\">Python</th>\n",
       "      <th colspan=\"5\" halign=\"left\">Math</th>\n",
       "      <th colspan=\"8\" halign=\"left\">En</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>...</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>23.0</td>\n",
       "      <td>65.7</td>\n",
       "      <td>44.3</td>\n",
       "      <td>3.0</td>\n",
       "      <td>33.5</td>\n",
       "      <td>52.0</td>\n",
       "      <td>110.0</td>\n",
       "      <td>137.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>82.0</td>\n",
       "      <td>...</td>\n",
       "      <td>116.0</td>\n",
       "      <td>146.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>75.7</td>\n",
       "      <td>41.6</td>\n",
       "      <td>4.0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>77.0</td>\n",
       "      <td>112.5</td>\n",
       "      <td>136.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20.0</td>\n",
       "      <td>87.4</td>\n",
       "      <td>40.2</td>\n",
       "      <td>18.0</td>\n",
       "      <td>58.5</td>\n",
       "      <td>93.0</td>\n",
       "      <td>116.2</td>\n",
       "      <td>149.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>74.2</td>\n",
       "      <td>...</td>\n",
       "      <td>106.8</td>\n",
       "      <td>143.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>65.0</td>\n",
       "      <td>39.2</td>\n",
       "      <td>9.0</td>\n",
       "      <td>40.5</td>\n",
       "      <td>63.0</td>\n",
       "      <td>94.5</td>\n",
       "      <td>143.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>12.0</td>\n",
       "      <td>57.4</td>\n",
       "      <td>49.8</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11.5</td>\n",
       "      <td>52.5</td>\n",
       "      <td>88.8</td>\n",
       "      <td>146.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>54.1</td>\n",
       "      <td>...</td>\n",
       "      <td>65.2</td>\n",
       "      <td>124.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>95.3</td>\n",
       "      <td>46.6</td>\n",
       "      <td>14.0</td>\n",
       "      <td>60.2</td>\n",
       "      <td>113.5</td>\n",
       "      <td>131.5</td>\n",
       "      <td>148.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>19.0</td>\n",
       "      <td>79.9</td>\n",
       "      <td>45.1</td>\n",
       "      <td>15.0</td>\n",
       "      <td>30.5</td>\n",
       "      <td>80.0</td>\n",
       "      <td>124.0</td>\n",
       "      <td>147.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>83.5</td>\n",
       "      <td>...</td>\n",
       "      <td>124.5</td>\n",
       "      <td>143.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>81.6</td>\n",
       "      <td>42.3</td>\n",
       "      <td>4.0</td>\n",
       "      <td>55.0</td>\n",
       "      <td>83.0</td>\n",
       "      <td>117.0</td>\n",
       "      <td>145.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>22.0</td>\n",
       "      <td>91.9</td>\n",
       "      <td>45.6</td>\n",
       "      <td>3.0</td>\n",
       "      <td>78.5</td>\n",
       "      <td>103.0</td>\n",
       "      <td>124.8</td>\n",
       "      <td>150.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>68.9</td>\n",
       "      <td>...</td>\n",
       "      <td>100.5</td>\n",
       "      <td>148.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>67.5</td>\n",
       "      <td>38.6</td>\n",
       "      <td>3.0</td>\n",
       "      <td>37.2</td>\n",
       "      <td>66.0</td>\n",
       "      <td>93.8</td>\n",
       "      <td>147.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>18.0</td>\n",
       "      <td>91.3</td>\n",
       "      <td>44.1</td>\n",
       "      <td>13.0</td>\n",
       "      <td>56.0</td>\n",
       "      <td>106.5</td>\n",
       "      <td>130.2</td>\n",
       "      <td>142.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>56.3</td>\n",
       "      <td>...</td>\n",
       "      <td>85.0</td>\n",
       "      <td>147.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>87.1</td>\n",
       "      <td>46.7</td>\n",
       "      <td>13.0</td>\n",
       "      <td>40.8</td>\n",
       "      <td>94.5</td>\n",
       "      <td>131.2</td>\n",
       "      <td>145.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>21.0</td>\n",
       "      <td>83.1</td>\n",
       "      <td>38.5</td>\n",
       "      <td>18.0</td>\n",
       "      <td>57.0</td>\n",
       "      <td>85.0</td>\n",
       "      <td>107.0</td>\n",
       "      <td>147.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>64.4</td>\n",
       "      <td>...</td>\n",
       "      <td>91.0</td>\n",
       "      <td>133.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>87.5</td>\n",
       "      <td>40.1</td>\n",
       "      <td>20.0</td>\n",
       "      <td>55.0</td>\n",
       "      <td>83.0</td>\n",
       "      <td>125.0</td>\n",
       "      <td>143.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>20.0</td>\n",
       "      <td>95.8</td>\n",
       "      <td>38.3</td>\n",
       "      <td>21.0</td>\n",
       "      <td>66.0</td>\n",
       "      <td>104.0</td>\n",
       "      <td>128.2</td>\n",
       "      <td>150.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>67.2</td>\n",
       "      <td>...</td>\n",
       "      <td>97.8</td>\n",
       "      <td>148.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>88.4</td>\n",
       "      <td>46.4</td>\n",
       "      <td>12.0</td>\n",
       "      <td>43.8</td>\n",
       "      <td>96.0</td>\n",
       "      <td>131.2</td>\n",
       "      <td>143.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>9.0</td>\n",
       "      <td>65.0</td>\n",
       "      <td>42.6</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>73.0</td>\n",
       "      <td>98.0</td>\n",
       "      <td>128.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>61.2</td>\n",
       "      <td>...</td>\n",
       "      <td>82.0</td>\n",
       "      <td>118.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>112.4</td>\n",
       "      <td>32.1</td>\n",
       "      <td>60.0</td>\n",
       "      <td>91.0</td>\n",
       "      <td>122.0</td>\n",
       "      <td>137.0</td>\n",
       "      <td>149.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>19.0</td>\n",
       "      <td>62.6</td>\n",
       "      <td>46.3</td>\n",
       "      <td>5.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>110.5</td>\n",
       "      <td>137.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>74.5</td>\n",
       "      <td>...</td>\n",
       "      <td>126.5</td>\n",
       "      <td>148.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>73.2</td>\n",
       "      <td>39.5</td>\n",
       "      <td>15.0</td>\n",
       "      <td>40.0</td>\n",
       "      <td>83.0</td>\n",
       "      <td>99.0</td>\n",
       "      <td>148.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>22.0</td>\n",
       "      <td>76.8</td>\n",
       "      <td>47.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>41.5</td>\n",
       "      <td>80.5</td>\n",
       "      <td>119.2</td>\n",
       "      <td>150.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>69.5</td>\n",
       "      <td>...</td>\n",
       "      <td>112.0</td>\n",
       "      <td>150.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>77.3</td>\n",
       "      <td>41.9</td>\n",
       "      <td>11.0</td>\n",
       "      <td>44.5</td>\n",
       "      <td>77.0</td>\n",
       "      <td>113.2</td>\n",
       "      <td>142.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>16.0</td>\n",
       "      <td>74.4</td>\n",
       "      <td>46.6</td>\n",
       "      <td>4.0</td>\n",
       "      <td>42.2</td>\n",
       "      <td>79.0</td>\n",
       "      <td>112.2</td>\n",
       "      <td>148.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>85.8</td>\n",
       "      <td>...</td>\n",
       "      <td>130.0</td>\n",
       "      <td>150.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>74.0</td>\n",
       "      <td>45.5</td>\n",
       "      <td>1.0</td>\n",
       "      <td>39.2</td>\n",
       "      <td>71.5</td>\n",
       "      <td>111.0</td>\n",
       "      <td>146.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>19.0</td>\n",
       "      <td>70.4</td>\n",
       "      <td>44.6</td>\n",
       "      <td>5.0</td>\n",
       "      <td>36.0</td>\n",
       "      <td>74.0</td>\n",
       "      <td>103.5</td>\n",
       "      <td>149.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>72.2</td>\n",
       "      <td>...</td>\n",
       "      <td>109.0</td>\n",
       "      <td>150.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>66.7</td>\n",
       "      <td>38.9</td>\n",
       "      <td>2.0</td>\n",
       "      <td>36.0</td>\n",
       "      <td>59.0</td>\n",
       "      <td>94.0</td>\n",
       "      <td>130.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>19.0</td>\n",
       "      <td>74.4</td>\n",
       "      <td>47.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>38.5</td>\n",
       "      <td>72.0</td>\n",
       "      <td>107.5</td>\n",
       "      <td>149.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>72.2</td>\n",
       "      <td>...</td>\n",
       "      <td>103.5</td>\n",
       "      <td>148.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>72.8</td>\n",
       "      <td>40.5</td>\n",
       "      <td>4.0</td>\n",
       "      <td>53.5</td>\n",
       "      <td>67.0</td>\n",
       "      <td>106.0</td>\n",
       "      <td>136.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>18.0</td>\n",
       "      <td>83.6</td>\n",
       "      <td>43.1</td>\n",
       "      <td>21.0</td>\n",
       "      <td>37.5</td>\n",
       "      <td>95.0</td>\n",
       "      <td>114.8</td>\n",
       "      <td>146.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>83.8</td>\n",
       "      <td>...</td>\n",
       "      <td>117.5</td>\n",
       "      <td>145.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>69.8</td>\n",
       "      <td>37.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>51.0</td>\n",
       "      <td>62.5</td>\n",
       "      <td>94.8</td>\n",
       "      <td>148.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>23.0</td>\n",
       "      <td>87.6</td>\n",
       "      <td>39.8</td>\n",
       "      <td>3.0</td>\n",
       "      <td>58.5</td>\n",
       "      <td>85.0</td>\n",
       "      <td>120.5</td>\n",
       "      <td>145.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>87.5</td>\n",
       "      <td>...</td>\n",
       "      <td>125.5</td>\n",
       "      <td>147.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>67.6</td>\n",
       "      <td>43.3</td>\n",
       "      <td>8.0</td>\n",
       "      <td>38.5</td>\n",
       "      <td>54.0</td>\n",
       "      <td>105.0</td>\n",
       "      <td>147.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>16 rows × 24 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          Python                                               Math        \\\n",
       "           count  mean   std   min   25%    50%    75%    max count  mean   \n",
       "sex class                                                                   \n",
       "女   1       23.0  65.7  44.3   3.0  33.5   52.0  110.0  137.0  23.0  82.0   \n",
       "    2       20.0  87.4  40.2  18.0  58.5   93.0  116.2  149.0  20.0  74.2   \n",
       "    3       12.0  57.4  49.8   0.0  11.5   52.5   88.8  146.0  12.0  54.1   \n",
       "    4       19.0  79.9  45.1  15.0  30.5   80.0  124.0  147.0  19.0  83.5   \n",
       "    5       22.0  91.9  45.6   3.0  78.5  103.0  124.8  150.0  22.0  68.9   \n",
       "    6       18.0  91.3  44.1  13.0  56.0  106.5  130.2  142.0  18.0  56.3   \n",
       "    7       21.0  83.1  38.5  18.0  57.0   85.0  107.0  147.0  21.0  64.4   \n",
       "    8       20.0  95.8  38.3  21.0  66.0  104.0  128.2  150.0  20.0  67.2   \n",
       "男   1        9.0  65.0  42.6   0.0  30.0   73.0   98.0  128.0   9.0  61.2   \n",
       "    2       19.0  62.6  46.3   5.0  23.0   50.0  110.5  137.0  19.0  74.5   \n",
       "    3       22.0  76.8  47.0   1.0  41.5   80.5  119.2  150.0  22.0  69.5   \n",
       "    4       16.0  74.4  46.6   4.0  42.2   79.0  112.2  148.0  16.0  85.8   \n",
       "    5       19.0  70.4  44.6   5.0  36.0   74.0  103.5  149.0  19.0  72.2   \n",
       "    6       19.0  74.4  47.0   1.0  38.5   72.0  107.5  149.0  19.0  72.2   \n",
       "    7       18.0  83.6  43.1  21.0  37.5   95.0  114.8  146.0  18.0  83.8   \n",
       "    8       23.0  87.6  39.8   3.0  58.5   85.0  120.5  145.0  23.0  87.5   \n",
       "\n",
       "           ...                  En                                         \\\n",
       "           ...    75%    max count   mean   std   min   25%    50%    75%   \n",
       "sex class  ...                                                              \n",
       "女   1      ...  116.0  146.0  23.0   75.7  41.6   4.0  37.0   77.0  112.5   \n",
       "    2      ...  106.8  143.0  20.0   65.0  39.2   9.0  40.5   63.0   94.5   \n",
       "    3      ...   65.2  124.0  12.0   95.3  46.6  14.0  60.2  113.5  131.5   \n",
       "    4      ...  124.5  143.0  19.0   81.6  42.3   4.0  55.0   83.0  117.0   \n",
       "    5      ...  100.5  148.0  22.0   67.5  38.6   3.0  37.2   66.0   93.8   \n",
       "    6      ...   85.0  147.0  18.0   87.1  46.7  13.0  40.8   94.5  131.2   \n",
       "    7      ...   91.0  133.0  21.0   87.5  40.1  20.0  55.0   83.0  125.0   \n",
       "    8      ...   97.8  148.0  20.0   88.4  46.4  12.0  43.8   96.0  131.2   \n",
       "男   1      ...   82.0  118.0   9.0  112.4  32.1  60.0  91.0  122.0  137.0   \n",
       "    2      ...  126.5  148.0  19.0   73.2  39.5  15.0  40.0   83.0   99.0   \n",
       "    3      ...  112.0  150.0  22.0   77.3  41.9  11.0  44.5   77.0  113.2   \n",
       "    4      ...  130.0  150.0  16.0   74.0  45.5   1.0  39.2   71.5  111.0   \n",
       "    5      ...  109.0  150.0  19.0   66.7  38.9   2.0  36.0   59.0   94.0   \n",
       "    6      ...  103.5  148.0  19.0   72.8  40.5   4.0  53.5   67.0  106.0   \n",
       "    7      ...  117.5  145.0  18.0   69.8  37.0  11.0  51.0   62.5   94.8   \n",
       "    8      ...  125.5  147.0  23.0   67.6  43.3   8.0  38.5   54.0  105.0   \n",
       "\n",
       "                  \n",
       "             max  \n",
       "sex class         \n",
       "女   1      136.0  \n",
       "    2      143.0  \n",
       "    3      148.0  \n",
       "    4      145.0  \n",
       "    5      147.0  \n",
       "    6      145.0  \n",
       "    7      143.0  \n",
       "    8      143.0  \n",
       "男   1      149.0  \n",
       "    2      148.0  \n",
       "    3      142.0  \n",
       "    4      146.0  \n",
       "    5      130.0  \n",
       "    6      136.0  \n",
       "    7      148.0  \n",
       "    8      147.0  \n",
       "\n",
       "[16 rows x 24 columns]"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by = ['sex','class']).describe().round(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "363d31de",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### 分组聚合运算apply、transform"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "3aed8dba",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>男</td>\n",
       "      <td>7</td>\n",
       "      <td>78</td>\n",
       "      <td>58</td>\n",
       "      <td>125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>男</td>\n",
       "      <td>8</td>\n",
       "      <td>3</td>\n",
       "      <td>132</td>\n",
       "      <td>49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>男</td>\n",
       "      <td>4</td>\n",
       "      <td>144</td>\n",
       "      <td>86</td>\n",
       "      <td>150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>男</td>\n",
       "      <td>5</td>\n",
       "      <td>112</td>\n",
       "      <td>63</td>\n",
       "      <td>111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>女</td>\n",
       "      <td>7</td>\n",
       "      <td>54</td>\n",
       "      <td>41</td>\n",
       "      <td>85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>295</th>\n",
       "      <td>男</td>\n",
       "      <td>2</td>\n",
       "      <td>81</td>\n",
       "      <td>121</td>\n",
       "      <td>85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>296</th>\n",
       "      <td>女</td>\n",
       "      <td>4</td>\n",
       "      <td>30</td>\n",
       "      <td>145</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>297</th>\n",
       "      <td>女</td>\n",
       "      <td>3</td>\n",
       "      <td>63</td>\n",
       "      <td>29</td>\n",
       "      <td>134</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298</th>\n",
       "      <td>男</td>\n",
       "      <td>6</td>\n",
       "      <td>74</td>\n",
       "      <td>110</td>\n",
       "      <td>52</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>299</th>\n",
       "      <td>男</td>\n",
       "      <td>6</td>\n",
       "      <td>61</td>\n",
       "      <td>44</td>\n",
       "      <td>124</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>300 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    sex  class  Python  Math   En\n",
       "0     男      7      78    58  125\n",
       "1     男      8       3   132   49\n",
       "2     男      4     144    86  150\n",
       "3     男      5     112    63  111\n",
       "4     女      7      54    41   85\n",
       "..   ..    ...     ...   ...  ...\n",
       "295   男      2      81   121   85\n",
       "296   女      4      30   145    3\n",
       "297   女      3      63    29  134\n",
       "298   男      6      74   110   52\n",
       "299   男      6      61    44  124\n",
       "\n",
       "[300 rows x 5 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "7f3d3db5",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>70.7</td>\n",
       "      <td>53.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>81.0</td>\n",
       "      <td>70.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>91.4</td>\n",
       "      <td>76.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>89.0</td>\n",
       "      <td>74.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>72.0</td>\n",
       "      <td>55.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>86.9</td>\n",
       "      <td>71.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>85.2</td>\n",
       "      <td>86.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>80.2</td>\n",
       "      <td>80.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>65.3</td>\n",
       "      <td>79.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>63.5</td>\n",
       "      <td>80.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>68.7</td>\n",
       "      <td>80.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>82.9</td>\n",
       "      <td>75.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>69.0</td>\n",
       "      <td>93.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>82.6</td>\n",
       "      <td>85.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>74.4</td>\n",
       "      <td>74.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>72.4</td>\n",
       "      <td>70.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Python    En\n",
       "sex class              \n",
       "女   1        70.7  53.9\n",
       "    2        81.0  70.5\n",
       "    3        91.4  76.6\n",
       "    4        89.0  74.3\n",
       "    5        72.0  55.0\n",
       "    6        86.9  71.4\n",
       "    7        85.2  86.3\n",
       "    8        80.2  80.7\n",
       "男   1        65.3  79.6\n",
       "    2        63.5  80.3\n",
       "    3        68.7  80.7\n",
       "    4        82.9  75.0\n",
       "    5        69.0  93.8\n",
       "    6        82.6  85.0\n",
       "    7        74.4  74.8\n",
       "    8        72.4  70.0"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#   对sex、class分组，只显示python、en列的数据，求得每组的平均值，只保留一位小数\n",
    "df.groupby(by = ['sex','class'])[['Python','En']].apply(np.mean).round(1)    # apply聚合结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "6776281c",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>74.4</td>\n",
       "      <td>74.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>72.4</td>\n",
       "      <td>70.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>82.9</td>\n",
       "      <td>75.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>69.0</td>\n",
       "      <td>93.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>85.2</td>\n",
       "      <td>86.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>295</th>\n",
       "      <td>63.5</td>\n",
       "      <td>80.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>296</th>\n",
       "      <td>89.0</td>\n",
       "      <td>74.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>297</th>\n",
       "      <td>91.4</td>\n",
       "      <td>76.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298</th>\n",
       "      <td>82.6</td>\n",
       "      <td>85.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>299</th>\n",
       "      <td>82.6</td>\n",
       "      <td>85.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>300 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Python    En\n",
       "0      74.4  74.8\n",
       "1      72.4  70.0\n",
       "2      82.9  75.0\n",
       "3      69.0  93.8\n",
       "4      85.2  86.3\n",
       "..      ...   ...\n",
       "295    63.5  80.3\n",
       "296    89.0  74.3\n",
       "297    91.4  76.6\n",
       "298    82.6  85.0\n",
       "299    82.6  85.0\n",
       "\n",
       "[300 rows x 2 columns]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def _mean(x):\n",
    "    return np.round(x.mean(),1)   #  可以自己定义函数\n",
    "df.groupby(['sex','class'])[['Python','En']].transform(_mean)  #  transform计算，返回结果，还是原来的长度"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "42d8b2b6",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### 分组聚合agg"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "262c28f2",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th colspan=\"3\" halign=\"left\">Python</th>\n",
       "      <th colspan=\"3\" halign=\"left\">Math</th>\n",
       "      <th colspan=\"3\" halign=\"left\">En</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>mean</th>\n",
       "      <th>amax</th>\n",
       "      <th>amin</th>\n",
       "      <th>mean</th>\n",
       "      <th>amax</th>\n",
       "      <th>amin</th>\n",
       "      <th>mean</th>\n",
       "      <th>amax</th>\n",
       "      <th>amin</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>70.7</td>\n",
       "      <td>148</td>\n",
       "      <td>1</td>\n",
       "      <td>67.3</td>\n",
       "      <td>148</td>\n",
       "      <td>2</td>\n",
       "      <td>53.9</td>\n",
       "      <td>143</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>81.0</td>\n",
       "      <td>147</td>\n",
       "      <td>10</td>\n",
       "      <td>71.4</td>\n",
       "      <td>146</td>\n",
       "      <td>7</td>\n",
       "      <td>70.5</td>\n",
       "      <td>138</td>\n",
       "      <td>33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>91.4</td>\n",
       "      <td>149</td>\n",
       "      <td>27</td>\n",
       "      <td>66.6</td>\n",
       "      <td>146</td>\n",
       "      <td>13</td>\n",
       "      <td>76.6</td>\n",
       "      <td>140</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>89.0</td>\n",
       "      <td>150</td>\n",
       "      <td>24</td>\n",
       "      <td>87.6</td>\n",
       "      <td>149</td>\n",
       "      <td>8</td>\n",
       "      <td>74.3</td>\n",
       "      <td>146</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>72.0</td>\n",
       "      <td>148</td>\n",
       "      <td>11</td>\n",
       "      <td>70.6</td>\n",
       "      <td>144</td>\n",
       "      <td>5</td>\n",
       "      <td>55.0</td>\n",
       "      <td>147</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>86.9</td>\n",
       "      <td>150</td>\n",
       "      <td>6</td>\n",
       "      <td>86.4</td>\n",
       "      <td>137</td>\n",
       "      <td>8</td>\n",
       "      <td>71.4</td>\n",
       "      <td>144</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>85.2</td>\n",
       "      <td>149</td>\n",
       "      <td>0</td>\n",
       "      <td>80.2</td>\n",
       "      <td>146</td>\n",
       "      <td>24</td>\n",
       "      <td>86.3</td>\n",
       "      <td>142</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>80.2</td>\n",
       "      <td>146</td>\n",
       "      <td>18</td>\n",
       "      <td>68.9</td>\n",
       "      <td>126</td>\n",
       "      <td>1</td>\n",
       "      <td>80.7</td>\n",
       "      <td>148</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>65.3</td>\n",
       "      <td>136</td>\n",
       "      <td>9</td>\n",
       "      <td>69.9</td>\n",
       "      <td>134</td>\n",
       "      <td>3</td>\n",
       "      <td>79.6</td>\n",
       "      <td>150</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>63.5</td>\n",
       "      <td>147</td>\n",
       "      <td>8</td>\n",
       "      <td>77.3</td>\n",
       "      <td>146</td>\n",
       "      <td>10</td>\n",
       "      <td>80.3</td>\n",
       "      <td>144</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>68.7</td>\n",
       "      <td>150</td>\n",
       "      <td>2</td>\n",
       "      <td>86.4</td>\n",
       "      <td>149</td>\n",
       "      <td>3</td>\n",
       "      <td>80.7</td>\n",
       "      <td>141</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>82.9</td>\n",
       "      <td>147</td>\n",
       "      <td>21</td>\n",
       "      <td>68.6</td>\n",
       "      <td>141</td>\n",
       "      <td>3</td>\n",
       "      <td>75.0</td>\n",
       "      <td>150</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>69.0</td>\n",
       "      <td>120</td>\n",
       "      <td>4</td>\n",
       "      <td>58.1</td>\n",
       "      <td>135</td>\n",
       "      <td>9</td>\n",
       "      <td>93.8</td>\n",
       "      <td>131</td>\n",
       "      <td>58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>82.6</td>\n",
       "      <td>150</td>\n",
       "      <td>11</td>\n",
       "      <td>64.3</td>\n",
       "      <td>144</td>\n",
       "      <td>7</td>\n",
       "      <td>85.0</td>\n",
       "      <td>142</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>74.4</td>\n",
       "      <td>144</td>\n",
       "      <td>2</td>\n",
       "      <td>70.9</td>\n",
       "      <td>150</td>\n",
       "      <td>8</td>\n",
       "      <td>74.8</td>\n",
       "      <td>149</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>72.4</td>\n",
       "      <td>148</td>\n",
       "      <td>1</td>\n",
       "      <td>90.5</td>\n",
       "      <td>142</td>\n",
       "      <td>26</td>\n",
       "      <td>70.0</td>\n",
       "      <td>145</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Python            Math              En          \n",
       "            mean amax amin  mean amax amin  mean amax amin\n",
       "sex class                                                 \n",
       "女   1       70.7  148    1  67.3  148    2  53.9  143    6\n",
       "    2       81.0  147   10  71.4  146    7  70.5  138   33\n",
       "    3       91.4  149   27  66.6  146   13  76.6  140    2\n",
       "    4       89.0  150   24  87.6  149    8  74.3  146    3\n",
       "    5       72.0  148   11  70.6  144    5  55.0  147    1\n",
       "    6       86.9  150    6  86.4  137    8  71.4  144    3\n",
       "    7       85.2  149    0  80.2  146   24  86.3  142    6\n",
       "    8       80.2  146   18  68.9  126    1  80.7  148    6\n",
       "男   1       65.3  136    9  69.9  134    3  79.6  150    8\n",
       "    2       63.5  147    8  77.3  146   10  80.3  144    6\n",
       "    3       68.7  150    2  86.4  149    3  80.7  141   12\n",
       "    4       82.9  147   21  68.6  141    3  75.0  150    4\n",
       "    5       69.0  120    4  58.1  135    9  93.8  131   58\n",
       "    6       82.6  150   11  64.3  144    7  85.0  142    5\n",
       "    7       74.4  144    2  70.9  150    8  74.8  149    3\n",
       "    8       72.4  148    1  90.5  142   26  70.0  145    1"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  agg分组聚合可以运算多种函数\n",
    "df.groupby(by = ['sex','class']) .agg([np.mean,np.max,np.min]).round(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "2b9e52ea",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th colspan=\"2\" halign=\"left\">Python</th>\n",
       "      <th colspan=\"2\" halign=\"left\">Math</th>\n",
       "      <th colspan=\"2\" halign=\"left\">En</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>平均值</th>\n",
       "      <th>最大值</th>\n",
       "      <th>平均值</th>\n",
       "      <th>最大值</th>\n",
       "      <th>平均值</th>\n",
       "      <th>最大值</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>70.7</td>\n",
       "      <td>148</td>\n",
       "      <td>67.3</td>\n",
       "      <td>148</td>\n",
       "      <td>53.9</td>\n",
       "      <td>143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>81.0</td>\n",
       "      <td>147</td>\n",
       "      <td>71.4</td>\n",
       "      <td>146</td>\n",
       "      <td>70.5</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>91.4</td>\n",
       "      <td>149</td>\n",
       "      <td>66.6</td>\n",
       "      <td>146</td>\n",
       "      <td>76.6</td>\n",
       "      <td>140</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>89.0</td>\n",
       "      <td>150</td>\n",
       "      <td>87.6</td>\n",
       "      <td>149</td>\n",
       "      <td>74.3</td>\n",
       "      <td>146</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>72.0</td>\n",
       "      <td>148</td>\n",
       "      <td>70.6</td>\n",
       "      <td>144</td>\n",
       "      <td>55.0</td>\n",
       "      <td>147</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>86.9</td>\n",
       "      <td>150</td>\n",
       "      <td>86.4</td>\n",
       "      <td>137</td>\n",
       "      <td>71.4</td>\n",
       "      <td>144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>85.2</td>\n",
       "      <td>149</td>\n",
       "      <td>80.2</td>\n",
       "      <td>146</td>\n",
       "      <td>86.3</td>\n",
       "      <td>142</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>80.2</td>\n",
       "      <td>146</td>\n",
       "      <td>68.9</td>\n",
       "      <td>126</td>\n",
       "      <td>80.7</td>\n",
       "      <td>148</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>65.3</td>\n",
       "      <td>136</td>\n",
       "      <td>69.9</td>\n",
       "      <td>134</td>\n",
       "      <td>79.6</td>\n",
       "      <td>150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>63.5</td>\n",
       "      <td>147</td>\n",
       "      <td>77.3</td>\n",
       "      <td>146</td>\n",
       "      <td>80.3</td>\n",
       "      <td>144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>68.7</td>\n",
       "      <td>150</td>\n",
       "      <td>86.4</td>\n",
       "      <td>149</td>\n",
       "      <td>80.7</td>\n",
       "      <td>141</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>82.9</td>\n",
       "      <td>147</td>\n",
       "      <td>68.6</td>\n",
       "      <td>141</td>\n",
       "      <td>75.0</td>\n",
       "      <td>150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>69.0</td>\n",
       "      <td>120</td>\n",
       "      <td>58.1</td>\n",
       "      <td>135</td>\n",
       "      <td>93.8</td>\n",
       "      <td>131</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>82.6</td>\n",
       "      <td>150</td>\n",
       "      <td>64.3</td>\n",
       "      <td>144</td>\n",
       "      <td>85.0</td>\n",
       "      <td>142</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>74.4</td>\n",
       "      <td>144</td>\n",
       "      <td>70.9</td>\n",
       "      <td>150</td>\n",
       "      <td>74.8</td>\n",
       "      <td>149</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>72.4</td>\n",
       "      <td>148</td>\n",
       "      <td>90.5</td>\n",
       "      <td>142</td>\n",
       "      <td>70.0</td>\n",
       "      <td>145</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Python       Math         En     \n",
       "             平均值  最大值   平均值  最大值   平均值  最大值\n",
       "sex class                                  \n",
       "女   1       70.7  148  67.3  148  53.9  143\n",
       "    2       81.0  147  71.4  146  70.5  138\n",
       "    3       91.4  149  66.6  146  76.6  140\n",
       "    4       89.0  150  87.6  149  74.3  146\n",
       "    5       72.0  148  70.6  144  55.0  147\n",
       "    6       86.9  150  86.4  137  71.4  144\n",
       "    7       85.2  149  80.2  146  86.3  142\n",
       "    8       80.2  146  68.9  126  80.7  148\n",
       "男   1       65.3  136  69.9  134  79.6  150\n",
       "    2       63.5  147  77.3  146  80.3  144\n",
       "    3       68.7  150  86.4  149  80.7  141\n",
       "    4       82.9  147  68.6  141  75.0  150\n",
       "    5       69.0  120  58.1  135  93.8  131\n",
       "    6       82.6  150  64.3  144  85.0  142\n",
       "    7       74.4  144  70.9  150  74.8  149\n",
       "    8       72.4  148  90.5  142  70.0  145"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by = ['sex','class']) .agg([('平均值',np.mean),('最大值',np.max)]).round(1)  #  给函数声明列名"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "a6a3decb",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>En</th>\n",
       "      <th>Math</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>148</td>\n",
       "      <td>6</td>\n",
       "      <td>67.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>147</td>\n",
       "      <td>33</td>\n",
       "      <td>71.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>149</td>\n",
       "      <td>2</td>\n",
       "      <td>66.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>150</td>\n",
       "      <td>3</td>\n",
       "      <td>87.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>148</td>\n",
       "      <td>1</td>\n",
       "      <td>70.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>150</td>\n",
       "      <td>3</td>\n",
       "      <td>86.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>149</td>\n",
       "      <td>6</td>\n",
       "      <td>80.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>146</td>\n",
       "      <td>6</td>\n",
       "      <td>68.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>136</td>\n",
       "      <td>8</td>\n",
       "      <td>69.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>147</td>\n",
       "      <td>6</td>\n",
       "      <td>77.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>150</td>\n",
       "      <td>12</td>\n",
       "      <td>86.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>147</td>\n",
       "      <td>4</td>\n",
       "      <td>68.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>120</td>\n",
       "      <td>58</td>\n",
       "      <td>58.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>150</td>\n",
       "      <td>5</td>\n",
       "      <td>64.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>144</td>\n",
       "      <td>3</td>\n",
       "      <td>70.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>148</td>\n",
       "      <td>1</td>\n",
       "      <td>90.5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Python  En  Math\n",
       "sex class                  \n",
       "女   1         148   6  67.3\n",
       "    2         147  33  71.4\n",
       "    3         149   2  66.6\n",
       "    4         150   3  87.6\n",
       "    5         148   1  70.6\n",
       "    6         150   3  86.4\n",
       "    7         149   6  80.2\n",
       "    8         146   6  68.9\n",
       "男   1         136   8  69.9\n",
       "    2         147   6  77.3\n",
       "    3         150  12  86.4\n",
       "    4         147   4  68.6\n",
       "    5         120  58  58.1\n",
       "    6         150   5  64.3\n",
       "    7         144   3  70.9\n",
       "    8         148   1  90.5"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  3列执行不同的计算\n",
    "df.groupby(by = ['sex','class']).agg({'Python':np.max,'En':np.min,'Math':np.mean}).round(1)  #  指定不同的列运算不同的函数"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7ee72706",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 透视表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "d0f5ede9",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th>Python</th>\n",
       "      <th>Math</th>\n",
       "      <th>En</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>男</td>\n",
       "      <td>7</td>\n",
       "      <td>78</td>\n",
       "      <td>58</td>\n",
       "      <td>125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>男</td>\n",
       "      <td>8</td>\n",
       "      <td>3</td>\n",
       "      <td>132</td>\n",
       "      <td>49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>男</td>\n",
       "      <td>4</td>\n",
       "      <td>144</td>\n",
       "      <td>86</td>\n",
       "      <td>150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>男</td>\n",
       "      <td>5</td>\n",
       "      <td>112</td>\n",
       "      <td>63</td>\n",
       "      <td>111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>女</td>\n",
       "      <td>7</td>\n",
       "      <td>54</td>\n",
       "      <td>41</td>\n",
       "      <td>85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>295</th>\n",
       "      <td>男</td>\n",
       "      <td>2</td>\n",
       "      <td>81</td>\n",
       "      <td>121</td>\n",
       "      <td>85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>296</th>\n",
       "      <td>女</td>\n",
       "      <td>4</td>\n",
       "      <td>30</td>\n",
       "      <td>145</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>297</th>\n",
       "      <td>女</td>\n",
       "      <td>3</td>\n",
       "      <td>63</td>\n",
       "      <td>29</td>\n",
       "      <td>134</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298</th>\n",
       "      <td>男</td>\n",
       "      <td>6</td>\n",
       "      <td>74</td>\n",
       "      <td>110</td>\n",
       "      <td>52</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>299</th>\n",
       "      <td>男</td>\n",
       "      <td>6</td>\n",
       "      <td>61</td>\n",
       "      <td>44</td>\n",
       "      <td>124</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>300 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    sex  class  Python  Math   En\n",
       "0     男      7      78    58  125\n",
       "1     男      8       3   132   49\n",
       "2     男      4     144    86  150\n",
       "3     男      5     112    63  111\n",
       "4     女      7      54    41   85\n",
       "..   ..    ...     ...   ...  ...\n",
       "295   男      2      81   121   85\n",
       "296   女      4      30   145    3\n",
       "297   女      3      63    29  134\n",
       "298   男      6      74   110   52\n",
       "299   男      6      61    44  124\n",
       "\n",
       "[300 rows x 5 columns]"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "affeb3af",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>En</th>\n",
       "      <th>Python</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>53.9</td>\n",
       "      <td>70.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>70.5</td>\n",
       "      <td>81.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>76.6</td>\n",
       "      <td>91.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>74.3</td>\n",
       "      <td>89.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>55.0</td>\n",
       "      <td>72.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>71.4</td>\n",
       "      <td>86.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>86.3</td>\n",
       "      <td>85.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>80.7</td>\n",
       "      <td>80.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>79.6</td>\n",
       "      <td>65.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>80.3</td>\n",
       "      <td>63.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>80.7</td>\n",
       "      <td>68.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>75.0</td>\n",
       "      <td>82.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>93.8</td>\n",
       "      <td>69.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>85.0</td>\n",
       "      <td>82.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>74.8</td>\n",
       "      <td>74.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>70.0</td>\n",
       "      <td>72.4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             En  Python\n",
       "sex class              \n",
       "女   1      53.9    70.7\n",
       "    2      70.5    81.0\n",
       "    3      76.6    91.4\n",
       "    4      74.3    89.0\n",
       "    5      55.0    72.0\n",
       "    6      71.4    86.9\n",
       "    7      86.3    85.2\n",
       "    8      80.7    80.2\n",
       "男   1      79.6    65.3\n",
       "    2      80.3    63.5\n",
       "    3      80.7    68.7\n",
       "    4      75.0    82.9\n",
       "    5      93.8    69.0\n",
       "    6      85.0    82.6\n",
       "    7      74.8    74.4\n",
       "    8      70.0    72.4"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  pivot_table透视表\n",
    "df.pivot_table(values =['Python','En'],  #  values需要显示的数据\n",
    "               index = ['sex','class'],   # index 根据哪几列进行分组透视\n",
    "               aggfunc = 'mean').round(1)  #  aggfunc 指定计算函数，计算方法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "dcce8ce5",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th colspan=\"2\" halign=\"left\">En</th>\n",
       "      <th>Math</th>\n",
       "      <th>Python</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>方差</th>\n",
       "      <th>最小值</th>\n",
       "      <th>最大值</th>\n",
       "      <th>平均值</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th>class</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">女</th>\n",
       "      <th>1</th>\n",
       "      <td>1697.6</td>\n",
       "      <td>6.0</td>\n",
       "      <td>148</td>\n",
       "      <td>70.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1317.1</td>\n",
       "      <td>33.0</td>\n",
       "      <td>146</td>\n",
       "      <td>81.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2207.6</td>\n",
       "      <td>2.0</td>\n",
       "      <td>146</td>\n",
       "      <td>91.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1791.1</td>\n",
       "      <td>3.0</td>\n",
       "      <td>149</td>\n",
       "      <td>89.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1677.9</td>\n",
       "      <td>1.0</td>\n",
       "      <td>144</td>\n",
       "      <td>72.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2155.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>137</td>\n",
       "      <td>86.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1908.5</td>\n",
       "      <td>6.0</td>\n",
       "      <td>146</td>\n",
       "      <td>85.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2486.6</td>\n",
       "      <td>6.0</td>\n",
       "      <td>126</td>\n",
       "      <td>80.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"8\" valign=\"top\">男</th>\n",
       "      <th>1</th>\n",
       "      <td>2238.2</td>\n",
       "      <td>8.0</td>\n",
       "      <td>134</td>\n",
       "      <td>65.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1930.2</td>\n",
       "      <td>6.0</td>\n",
       "      <td>146</td>\n",
       "      <td>63.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1865.1</td>\n",
       "      <td>12.0</td>\n",
       "      <td>149</td>\n",
       "      <td>68.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2055.5</td>\n",
       "      <td>4.0</td>\n",
       "      <td>141</td>\n",
       "      <td>82.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>626.4</td>\n",
       "      <td>58.0</td>\n",
       "      <td>135</td>\n",
       "      <td>69.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1621.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>144</td>\n",
       "      <td>82.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1813.7</td>\n",
       "      <td>3.0</td>\n",
       "      <td>150</td>\n",
       "      <td>74.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1903.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>142</td>\n",
       "      <td>72.4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               En       Math Python\n",
       "               方差   最小值  最大值    平均值\n",
       "sex class                          \n",
       "女   1      1697.6   6.0  148   70.7\n",
       "    2      1317.1  33.0  146   81.0\n",
       "    3      2207.6   2.0  146   91.4\n",
       "    4      1791.1   3.0  149   89.0\n",
       "    5      1677.9   1.0  144   72.0\n",
       "    6      2155.0   3.0  137   86.9\n",
       "    7      1908.5   6.0  146   85.2\n",
       "    8      2486.6   6.0  126   80.2\n",
       "男   1      2238.2   8.0  134   65.3\n",
       "    2      1930.2   6.0  146   63.5\n",
       "    3      1865.1  12.0  149   68.7\n",
       "    4      2055.5   4.0  141   82.9\n",
       "    5       626.4  58.0  135   69.0\n",
       "    6      1621.0   5.0  144   82.6\n",
       "    7      1813.7   3.0  150   74.4\n",
       "    8      1903.0   1.0  142   72.4"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.pivot_table(values =['Python','Math','En'],  \n",
    "               index = ['sex','class'],   \n",
    "               aggfunc = {'Python':[('平均值',np.mean)],    #  可以定义指定列运算指定的函数，且定义列名称\n",
    "                          'Math':[('最大值',np.max)],\n",
    "                         'En':[('最小值',np.min),('方差',np.var)]}).round(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "891bd7c3",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 时间序列"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3e354b14",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 时间戳操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "6c952086",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2020-09-15 20:00:00')"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timestamp('2020.09.15 20')  #  Timestamp时刻数据，具体年月日时间"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "c41f9636",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2020', 'A-DEC')"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Period('2020.09.15',freq='M')  #  Period时期数据，表示一段时间、频率(M=月)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "6f87c52b",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2020-09-15', '2020-09-16', '2020-09-17', '2020-09-18',\n",
       "               '2020-09-19', '2020-09-20', '2020-09-21', '2020-09-22',\n",
       "               '2020-09-23', '2020-09-24'],\n",
       "              dtype='datetime64[ns]', freq='D')"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range('2020.09.15',freq='D',periods=10)  #  date_range生成一段时间的数据（精确到纳秒），D=天，periods生成多少的数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "e3f9386e",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PeriodIndex(['2020-09-15', '2020-09-16', '2020-09-17', '2020-09-18',\n",
       "             '2020-09-19', '2020-09-20', '2020-09-21', '2020-09-22',\n",
       "             '2020-09-23', '2020-09-24'],\n",
       "            dtype='period[D]')"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.period_range('2020.09.15',periods=10)  #  period_range生成以天为单位的日期数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "dea3664a",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "index = pd.date_range('2020.09.15',freq='D',periods=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "c03b5e5c",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-09-15    0\n",
       "2020-09-16    6\n",
       "2020-09-17    3\n",
       "2020-09-18    0\n",
       "2020-09-19    7\n",
       "2020-09-20    8\n",
       "2020-09-21    4\n",
       "2020-09-22    4\n",
       "2020-09-23    8\n",
       "2020-09-24    9\n",
       "Freq: D, dtype: int32"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts = pd.Series(np.random.randint(0,10,size = 10),   #  时间戳的创建\n",
    "               index = index)\n",
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "f78c7d48",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2020-09-15', '2020-09-15', '2020-09-15', '2020-09-15'], dtype='datetime64[ns]', freq=None)"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.to_datetime(['2020.09.15','2020-09-15','2020/09/15','15/09/2020'])  #  创建时间的转换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "3ea3b9ed",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1638083113.4968832"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import time\n",
    "time.time()  #  秒"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "73817e31",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2021-11-28 07:05:13')"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.to_datetime(1638083113,unit='s')   #  世界标准时间，将秒转换为日期"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "2e186f15",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2021-11-28 07:05:13.496000')"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt = pd.to_datetime(1638083113496,unit='ms')   #  世界标准时间，将毫秒转换为日期\n",
    "dt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "6d930b9f",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2021-11-28 15:05:13.496000')"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt + pd.DateOffset(hours = 8)  #  将世界时间，转换为北京时间"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "90a25875",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2022-03-08 07:05:13.496000')"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt + pd.DateOffset(days = 100)  #  计算一百天后的日期"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3f406251",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 时间索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "d2470e2f",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-11-28     96\n",
       "2021-11-29     64\n",
       "2021-11-30    146\n",
       "2021-12-01    231\n",
       "2021-12-02     42\n",
       "             ... \n",
       "2022-06-11    111\n",
       "2022-06-12     86\n",
       "2022-06-13    101\n",
       "2022-06-14    177\n",
       "2022-06-15    179\n",
       "Freq: D, Length: 200, dtype: int32"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts = pd.Series(np.random.randint(0,300,size = 200),\n",
    "              index = pd.date_range('2021.11.28',freq = 'D',periods = 200))\n",
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "895dcae4",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "64"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  时间需要使用str字符串进行索引\n",
    "ts['2021/11/29']  # 取指定一个日期的数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "c840569c",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-11-28     96\n",
       "2021-11-29     64\n",
       "2021-11-30    146\n",
       "2021-12-01    231\n",
       "2021-12-02     42\n",
       "2021-12-03    134\n",
       "2021-12-04    253\n",
       "2021-12-05     58\n",
       "2021-12-06    109\n",
       "2021-12-07    101\n",
       "2021-12-08    171\n",
       "2021-12-09    242\n",
       "2021-12-10    261\n",
       "2021-12-11      7\n",
       "2021-12-12    268\n",
       "Freq: D, dtype: int32"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  切片操作\n",
    "ts['2021/11/28':'2021.12.12']  #  取一段时间内的所有数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "ee464964",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-12-01    231\n",
       "2021-12-04    253\n",
       "2021-12-07    101\n",
       "2021-12-10    261\n",
       "2021-12-13     85\n",
       "             ... \n",
       "2022-06-02    267\n",
       "2022-06-05    212\n",
       "2022-06-08     87\n",
       "2022-06-11    111\n",
       "2022-06-14    177\n",
       "Freq: 3D, Length: 66, dtype: int32"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts['2021/12']  # 取指定月份的数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "046fe0b3",
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-11-28     96\n",
       "2021-11-29     64\n",
       "2021-11-30    146\n",
       "2021-12-01    231\n",
       "2021-12-02     42\n",
       "2021-12-03    134\n",
       "2021-12-04    253\n",
       "2021-12-05     58\n",
       "2021-12-06    109\n",
       "2021-12-07    101\n",
       "2021-12-08    171\n",
       "2021-12-09    242\n",
       "2021-12-10    261\n",
       "2021-12-11      7\n",
       "2021-12-12    268\n",
       "2021-12-13     85\n",
       "2021-12-14     83\n",
       "2021-12-15      2\n",
       "2021-12-16     56\n",
       "2021-12-17     27\n",
       "2021-12-18    202\n",
       "2021-12-19     11\n",
       "2021-12-20     53\n",
       "2021-12-21    230\n",
       "2021-12-22    132\n",
       "2021-12-23    175\n",
       "2021-12-24    200\n",
       "2021-12-25     95\n",
       "2021-12-26    124\n",
       "2021-12-27    169\n",
       "2021-12-28     36\n",
       "2021-12-29    110\n",
       "2021-12-30    109\n",
       "2021-12-31    153\n",
       "Freq: D, dtype: int32"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts['2021']  #  取指定年份的数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "c83ed118",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "146"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts[pd.Timestamp('2021.11.30')]    #  Timestamp方法取指定日期数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "6084bf9b",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-11-30    146\n",
       "2021-12-01    231\n",
       "2021-12-02     42\n",
       "2021-12-03    134\n",
       "2021-12-04    253\n",
       "2021-12-05     58\n",
       "2021-12-06    109\n",
       "2021-12-07    101\n",
       "2021-12-08    171\n",
       "2021-12-09    242\n",
       "2021-12-10    261\n",
       "2021-12-11      7\n",
       "2021-12-12    268\n",
       "Freq: D, dtype: int32"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts[pd.Timestamp('2021.11.30'):pd.Timestamp('2021.12.12')]    #  Timestamp方法取一段时间内的所有数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "366610c6",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-11-30    146\n",
       "2021-12-03    134\n",
       "2021-12-06    109\n",
       "2021-12-09    242\n",
       "2021-12-12    268\n",
       "             ... \n",
       "2022-06-01    268\n",
       "2022-06-04    188\n",
       "2022-06-07     29\n",
       "2022-06-10    133\n",
       "2022-06-13    101\n",
       "Freq: 3D, Length: 66, dtype: int32"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts[pd.Timestamp('2021.11.30')::3]  #  Timestamp方法，每间一段时间取数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "66a742ae",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-11-30    146\n",
       "2021-12-01    231\n",
       "2021-12-02     42\n",
       "2021-12-03    134\n",
       "2021-12-04    253\n",
       "2021-12-05     58\n",
       "2021-12-06    109\n",
       "2021-12-07    101\n",
       "2021-12-08    171\n",
       "2021-12-09    242\n",
       "2021-12-10    261\n",
       "2021-12-11      7\n",
       "2021-12-12    268\n",
       "2021-12-13     85\n",
       "2021-12-14     83\n",
       "Freq: D, dtype: int32"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts[pd.date_range('2021.11.30',freq = 'D',periods= 15)]  #  date_range方法，从指定日期开始，获取15天数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "feaff97e",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Int64Index([2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021,\n",
       "            ...\n",
       "            2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022],\n",
       "           dtype='int64', length=200)"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.index.year  #  获取日期的年"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "f6be1185",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Int64Index([332, 333, 334, 335, 336, 337, 338, 339, 340, 341,\n",
       "            ...\n",
       "            157, 158, 159, 160, 161, 162, 163, 164, 165, 166],\n",
       "           dtype='int64', length=200)"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.index.dayofyear  #  获取日期是今年的第几天"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "69454856",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Int64Index([47, 48, 48, 48, 48, 48, 48, 48, 49, 49,\n",
       "            ...\n",
       "            23, 23, 23, 23, 23, 23, 23, 24, 24, 24],\n",
       "           dtype='int64', length=200)"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.index.weekofyear  #  获取日期对应的一年中第几周"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "d4c18ac6",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')  # 忽略红色警告"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d2029ea6",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 时间序列常用和操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "3a217b92",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-01-01    598\n",
       "2021-01-02    745\n",
       "2021-01-03    347\n",
       "2021-01-04    912\n",
       "2021-01-05    886\n",
       "             ... \n",
       "2021-12-27    566\n",
       "2021-12-28    760\n",
       "2021-12-29    759\n",
       "2021-12-30    358\n",
       "2021-12-31    522\n",
       "Freq: D, Length: 365, dtype: int32"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "index = pd.date_range('2021/1/1',freq= 'D',periods= 365)\n",
    "ts = pd.Series(np.random.randint(0,1024,size = 365),\n",
    "              index=index)\n",
    "ts"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "329c4297",
   "metadata": {
    "hidden": true
   },
   "source": [
    "#### 数据移动"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "0807c0b8",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-01-01      NaN\n",
       "2021-01-02      NaN\n",
       "2021-01-03    598.0\n",
       "2021-01-04    745.0\n",
       "2021-01-05    347.0\n",
       "              ...  \n",
       "2021-12-27    266.0\n",
       "2021-12-28    776.0\n",
       "2021-12-29    566.0\n",
       "2021-12-30    760.0\n",
       "2021-12-31    759.0\n",
       "Freq: D, Length: 365, dtype: float64"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(periods=2)  #  数据向后移动2行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "b913c151",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-01-01    347.0\n",
       "2021-01-02    912.0\n",
       "2021-01-03    886.0\n",
       "2021-01-04    690.0\n",
       "2021-01-05     59.0\n",
       "              ...  \n",
       "2021-12-27    759.0\n",
       "2021-12-28    358.0\n",
       "2021-12-29    522.0\n",
       "2021-12-30      NaN\n",
       "2021-12-31      NaN\n",
       "Freq: D, Length: 365, dtype: float64"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(periods= -2) # 数据向前移动2行"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d1435dcd",
   "metadata": {
    "hidden": true
   },
   "source": [
    "#### 日期移动"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "02f94262",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-01-06    598\n",
       "2021-01-07    745\n",
       "2021-01-08    347\n",
       "2021-01-09    912\n",
       "2021-01-10    886\n",
       "             ... \n",
       "2022-01-01    566\n",
       "2022-01-02    760\n",
       "2022-01-03    759\n",
       "2022-01-04    358\n",
       "2022-01-05    522\n",
       "Freq: D, Length: 365, dtype: int32"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(periods= 5,freq=pd.tseries.offsets.Day())  #  日期天数向后移动，如果periods给负数久是向前移动"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "5dc63990",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-08-01    598\n",
       "2020-09-01    745\n",
       "2020-09-01    347\n",
       "2020-09-01    912\n",
       "2020-09-01    886\n",
       "             ... \n",
       "2021-08-01    566\n",
       "2021-08-01    760\n",
       "2021-08-01    759\n",
       "2021-08-01    358\n",
       "2021-08-01    522\n",
       "Length: 365, dtype: int32"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(periods=-5,freq=pd.tseries.offsets.MonthBegin())  #  日期月份向前移动"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fa259949",
   "metadata": {
    "hidden": true
   },
   "source": [
    "#### 频率转换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "3f725196",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-01-31    609\n",
       "2021-02-28    567\n",
       "2021-03-31    225\n",
       "2021-04-30    982\n",
       "2021-05-31    622\n",
       "2021-06-30    881\n",
       "2021-07-31    702\n",
       "2021-08-31    164\n",
       "2021-09-30    944\n",
       "2021-10-31    722\n",
       "2021-11-30    264\n",
       "2021-12-31    522\n",
       "Freq: M, dtype: int32"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.asfreq(pd.tseries.offsets.MonthEnd())  #  时间频率转变成月"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "id": "a876e33c",
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-01-01     598\n",
       "2021-01-08      21\n",
       "2021-01-15     737\n",
       "2021-01-22     215\n",
       "2021-01-29     460\n",
       "2021-02-05     798\n",
       "2021-02-12     403\n",
       "2021-02-19     811\n",
       "2021-02-26     653\n",
       "2021-03-05     524\n",
       "2021-03-12     193\n",
       "2021-03-19     850\n",
       "2021-03-26     729\n",
       "2021-04-02     187\n",
       "2021-04-09     981\n",
       "2021-04-16     417\n",
       "2021-04-23     174\n",
       "2021-04-30     982\n",
       "2021-05-07     107\n",
       "2021-05-14     610\n",
       "2021-05-21     680\n",
       "2021-05-28     536\n",
       "2021-06-04     342\n",
       "2021-06-11     100\n",
       "2021-06-18     437\n",
       "2021-06-25     885\n",
       "2021-07-02     662\n",
       "2021-07-09     529\n",
       "2021-07-16    1007\n",
       "2021-07-23     510\n",
       "2021-07-30     692\n",
       "2021-08-06     911\n",
       "2021-08-13     563\n",
       "2021-08-20     382\n",
       "2021-08-27     515\n",
       "2021-09-03     194\n",
       "2021-09-10     303\n",
       "2021-09-17      12\n",
       "2021-09-24     700\n",
       "2021-10-01      21\n",
       "2021-10-08     120\n",
       "2021-10-15     978\n",
       "2021-10-22     656\n",
       "2021-10-29     160\n",
       "2021-11-05      57\n",
       "2021-11-12       8\n",
       "2021-11-19     208\n",
       "2021-11-26     224\n",
       "2021-12-03      50\n",
       "2021-12-10     399\n",
       "2021-12-17     795\n",
       "2021-12-24     686\n",
       "2021-12-31     522\n",
       "Freq: W, dtype: int32"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.asfreq(pd.tseries.offsets.Week()) #  时间频率转变成周"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "id": "767cb730",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-01-01 00:00:00    598\n",
       "2021-01-01 01:00:00      0\n",
       "2021-01-01 02:00:00      0\n",
       "2021-01-01 03:00:00      0\n",
       "2021-01-01 04:00:00      0\n",
       "                      ... \n",
       "2021-12-30 20:00:00      0\n",
       "2021-12-30 21:00:00      0\n",
       "2021-12-30 22:00:00      0\n",
       "2021-12-30 23:00:00      0\n",
       "2021-12-31 00:00:00    522\n",
       "Freq: H, Length: 8737, dtype: int32"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.asfreq(pd.tseries.offsets.Hour(),  #  时间频率转变成小时,多出来的数据会变成空数据，\n",
    "          fill_value=0) #  可以使用fill_value填充"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fdb75da4",
   "metadata": {
    "hidden": true
   },
   "source": [
    "#### 重采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "id": "a3738a35",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-01-31    16084\n",
       "2021-02-28    13172\n",
       "2021-03-31    16442\n",
       "2021-04-30    12588\n",
       "2021-05-31    14866\n",
       "2021-06-30    15676\n",
       "2021-07-31    16668\n",
       "2021-08-31    16868\n",
       "2021-09-30    17257\n",
       "2021-10-31    14434\n",
       "2021-11-30    12831\n",
       "2021-12-31    14200\n",
       "Freq: M, dtype: int32"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  时间序列的重采样，和之前分组聚合类似\n",
    "ts.resample(rule='M').agg(np.sum)   #  rule=M代表按月"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "id": "2b043d40",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2021-01-31     16084\n",
       "2021-04-30     58286\n",
       "2021-07-31    105496\n",
       "2021-10-31    154055\n",
       "2022-01-31    181086\n",
       "Freq: 3M, dtype: int32"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  重采样，按照季度进行计算\n",
    "ts.resample(rule='3M').agg(np.sum).cumsum() #  rule=3M代表按3个月"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "64cf981e",
   "metadata": {
    "hidden": true
   },
   "source": [
    "#### DataFrame重采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "id": "f210bc7c",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "      <th>volum</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>58</td>\n",
       "      <td>44</td>\n",
       "      <td>2021-01-10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>45</td>\n",
       "      <td>81</td>\n",
       "      <td>2021-01-11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>23</td>\n",
       "      <td>18</td>\n",
       "      <td>2021-01-12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>26</td>\n",
       "      <td>7</td>\n",
       "      <td>2021-01-13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>35</td>\n",
       "      <td>40</td>\n",
       "      <td>2021-01-14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>360</th>\n",
       "      <td>32</td>\n",
       "      <td>6</td>\n",
       "      <td>2022-01-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>361</th>\n",
       "      <td>93</td>\n",
       "      <td>6</td>\n",
       "      <td>2022-01-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>362</th>\n",
       "      <td>60</td>\n",
       "      <td>76</td>\n",
       "      <td>2022-01-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>363</th>\n",
       "      <td>60</td>\n",
       "      <td>83</td>\n",
       "      <td>2022-01-08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>364</th>\n",
       "      <td>1</td>\n",
       "      <td>98</td>\n",
       "      <td>2022-01-09</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>365 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     price  volum       time\n",
       "0       58     44 2021-01-10\n",
       "1       45     81 2021-01-11\n",
       "2       23     18 2021-01-12\n",
       "3       26      7 2021-01-13\n",
       "4       35     40 2021-01-14\n",
       "..     ...    ...        ...\n",
       "360     32      6 2022-01-05\n",
       "361     93      6 2022-01-06\n",
       "362     60     76 2022-01-07\n",
       "363     60     83 2022-01-08\n",
       "364      1     98 2022-01-09\n",
       "\n",
       "[365 rows x 3 columns]"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(data = {'price':np.random.randint(0,100,size = 365),\n",
    "                         'volum':np.random.randint(0,100,size = 365),\n",
    "                         'time':pd.date_range('2021.01.10',periods=365)})\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "id": "8c7797fd",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "      <th>volum</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2021-01-31</th>\n",
       "      <td>940</td>\n",
       "      <td>968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-02-28</th>\n",
       "      <td>1350</td>\n",
       "      <td>1309</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-03-31</th>\n",
       "      <td>1290</td>\n",
       "      <td>1694</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-04-30</th>\n",
       "      <td>1372</td>\n",
       "      <td>1409</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-05-31</th>\n",
       "      <td>1499</td>\n",
       "      <td>1596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-06-30</th>\n",
       "      <td>1344</td>\n",
       "      <td>1239</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-07-31</th>\n",
       "      <td>1728</td>\n",
       "      <td>1826</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-08-31</th>\n",
       "      <td>1352</td>\n",
       "      <td>1358</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-09-30</th>\n",
       "      <td>1285</td>\n",
       "      <td>1539</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-10-31</th>\n",
       "      <td>1666</td>\n",
       "      <td>1508</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-11-30</th>\n",
       "      <td>1350</td>\n",
       "      <td>1373</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-12-31</th>\n",
       "      <td>1542</td>\n",
       "      <td>1478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-31</th>\n",
       "      <td>386</td>\n",
       "      <td>475</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            price  volum\n",
       "time                    \n",
       "2021-01-31    940    968\n",
       "2021-02-28   1350   1309\n",
       "2021-03-31   1290   1694\n",
       "2021-04-30   1372   1409\n",
       "2021-05-31   1499   1596\n",
       "2021-06-30   1344   1239\n",
       "2021-07-31   1728   1826\n",
       "2021-08-31   1352   1358\n",
       "2021-09-30   1285   1539\n",
       "2021-10-31   1666   1508\n",
       "2021-11-30   1350   1373\n",
       "2021-12-31   1542   1478\n",
       "2022-01-31    386    475"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.resample(rule = 'M',  #  rule = 'M'按照月\n",
    "            on='time').sum()  #  由于数据有多个列，on='time'需要声明指定对应的列进行重采样，否则报错"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "id": "f72d727f",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "      <th>volum</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2021-01-31</th>\n",
       "      <td>940</td>\n",
       "      <td>968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-02-28</th>\n",
       "      <td>1350</td>\n",
       "      <td>1309</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-03-31</th>\n",
       "      <td>1290</td>\n",
       "      <td>1694</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-04-30</th>\n",
       "      <td>1372</td>\n",
       "      <td>1409</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-05-31</th>\n",
       "      <td>1499</td>\n",
       "      <td>1596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-06-30</th>\n",
       "      <td>1344</td>\n",
       "      <td>1239</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-07-31</th>\n",
       "      <td>1728</td>\n",
       "      <td>1826</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-08-31</th>\n",
       "      <td>1352</td>\n",
       "      <td>1358</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-09-30</th>\n",
       "      <td>1285</td>\n",
       "      <td>1539</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-10-31</th>\n",
       "      <td>1666</td>\n",
       "      <td>1508</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-11-30</th>\n",
       "      <td>1350</td>\n",
       "      <td>1373</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-12-31</th>\n",
       "      <td>1542</td>\n",
       "      <td>1478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-01-31</th>\n",
       "      <td>386</td>\n",
       "      <td>475</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            price  volum\n",
       "time                    \n",
       "2021-01-31    940    968\n",
       "2021-02-28   1350   1309\n",
       "2021-03-31   1290   1694\n",
       "2021-04-30   1372   1409\n",
       "2021-05-31   1499   1596\n",
       "2021-06-30   1344   1239\n",
       "2021-07-31   1728   1826\n",
       "2021-08-31   1352   1358\n",
       "2021-09-30   1285   1539\n",
       "2021-10-31   1666   1508\n",
       "2021-11-30   1350   1373\n",
       "2021-12-31   1542   1478\n",
       "2022-01-31    386    475"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.resample(rule = 'M',  \n",
    "            on='time').apply(np.sum)  #  效果同上"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "id": "aa4dccc8",
   "metadata": {
    "hidden": true,
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "      <th>volum</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>940</td>\n",
       "      <td>968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>940</td>\n",
       "      <td>968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>940</td>\n",
       "      <td>968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>940</td>\n",
       "      <td>968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>940</td>\n",
       "      <td>968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>360</th>\n",
       "      <td>386</td>\n",
       "      <td>475</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>361</th>\n",
       "      <td>386</td>\n",
       "      <td>475</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>362</th>\n",
       "      <td>386</td>\n",
       "      <td>475</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>363</th>\n",
       "      <td>386</td>\n",
       "      <td>475</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>364</th>\n",
       "      <td>386</td>\n",
       "      <td>475</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>365 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     price  volum\n",
       "0      940    968\n",
       "1      940    968\n",
       "2      940    968\n",
       "3      940    968\n",
       "4      940    968\n",
       "..     ...    ...\n",
       "360    386    475\n",
       "361    386    475\n",
       "362    386    475\n",
       "363    386    475\n",
       "364    386    475\n",
       "\n",
       "[365 rows x 2 columns]"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.resample(rule = 'M',  \n",
    "            on='time').transform(np.sum)  "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dd869958",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 数据可视化"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "57194c99",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 线型图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f8752b4e",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df1 = pd.DataFrame(np.random.randn(1000,4),columns=list('ABCD'))\n",
    "df1.cumsum().plot()   #  直接调用plot表示绘制线"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5aa73af6",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 条形图、柱状图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "7059c096",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df2 = pd.DataFrame(np.random.rand(10,4),columns=list('ABCD'))\n",
    "df2.plot.bar()  #  柱状图\n",
    "df2.plot.bar(stacked = True)  #  堆叠柱状图\n",
    "df2.plot.barh() #  水平柱状图"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eef9bdb1",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 饼图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "f24e437b",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([<AxesSubplot:ylabel='one'>, <AxesSubplot:ylabel='two'>],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df3 = pd.DataFrame(np.random.rand(4,2),columns=['one','two'],index = list('ABCD'))\n",
    "df3['one'].plot.pie()  #  指定某列，绘制成饼图\n",
    "df3.plot.pie(subplots = True,figsize = (10,10), #  对所有列绘制饼图，figsize是饼图的大小\n",
    "             autopct = '%0.2f%%')   #  显示数值百分比，0.2f%代表下小数百分比"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d417870",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 散点图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "95b5bd09",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='A', ylabel='B'>"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#  表述两个属性之间的关系\n",
    "df4 = pd.DataFrame(np.random.randn(200,4),columns=list('ABCD'))\n",
    "df4.plot.scatter(x='A',y='B')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "65b40658",
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "s must be a scalar, or float array-like with the same size as x and y",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_10560/2269142167.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      6\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      7\u001b[0m \u001b[1;31m#  再次向ax中绘制图形\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m df4.plot.scatter(x= 'B',y = 'D',color = 'DarkGreen',label = 'Group2', \n\u001b[0m\u001b[0;32m      9\u001b[0m                  \u001b[0malpha\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0.5\u001b[0m\u001b[1;33m,\u001b[0m  \u001b[1;31m#  透明度\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     10\u001b[0m                  \u001b[0ms\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrandom\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrandint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m30\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0msize\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m100\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mG:\\Program Files\\Python39\\lib\\site-packages\\pandas\\plotting\\_core.py\u001b[0m in \u001b[0;36mscatter\u001b[1;34m(self, x, y, s, c, **kwargs)\u001b[0m\n\u001b[0;32m   1634\u001b[0m             ...                       colormap='viridis')\n\u001b[0;32m   1635\u001b[0m         \"\"\"\n\u001b[1;32m-> 1636\u001b[1;33m         \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkind\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"scatter\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0ms\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0ms\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mc\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1637\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1638\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mhexbin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mC\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreduce_C_function\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mgridsize\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mG:\\Program Files\\Python39\\lib\\site-packages\\pandas\\plotting\\_core.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m    915\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mkind\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_dataframe_kinds\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    916\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mABCDataFrame\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 917\u001b[1;33m                 \u001b[1;32mreturn\u001b[0m \u001b[0mplot_backend\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkind\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mkind\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    918\u001b[0m             \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    919\u001b[0m                 \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mf\"plot kind {kind} can only be used for data frames\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mG:\\Program Files\\Python39\\lib\\site-packages\\pandas\\plotting\\_matplotlib\\__init__.py\u001b[0m in \u001b[0;36mplot\u001b[1;34m(data, kind, **kwargs)\u001b[0m\n\u001b[0;32m     69\u001b[0m             \u001b[0mkwargs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"ax\"\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"left_ax\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0max\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     70\u001b[0m     \u001b[0mplot_obj\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mPLOT_CLASSES\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mkind\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 71\u001b[1;33m     \u001b[0mplot_obj\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgenerate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     72\u001b[0m     \u001b[0mplot_obj\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdraw\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     73\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0mplot_obj\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mG:\\Program Files\\Python39\\lib\\site-packages\\pandas\\plotting\\_matplotlib\\core.py\u001b[0m in \u001b[0;36mgenerate\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    286\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_compute_plot_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    287\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_setup_subplots\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 288\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_make_plot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    289\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_add_table\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    290\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_make_legend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mG:\\Program Files\\Python39\\lib\\site-packages\\pandas\\plotting\\_matplotlib\\core.py\u001b[0m in \u001b[0;36m_make_plot\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m   1068\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1069\u001b[0m             \u001b[0mlabel\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1070\u001b[1;33m         scatter = ax.scatter(\n\u001b[0m\u001b[0;32m   1071\u001b[0m             \u001b[0mdata\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1072\u001b[0m             \u001b[0mdata\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mG:\\Program Files\\Python39\\lib\\site-packages\\matplotlib\\__init__.py\u001b[0m in \u001b[0;36minner\u001b[1;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[0;32m   1410\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0minner\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1411\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mdata\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1412\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0mmap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msanitize_sequence\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1413\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1414\u001b[0m         \u001b[0mbound\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnew_sig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mG:\\Program Files\\Python39\\lib\\site-packages\\matplotlib\\axes\\_axes.py\u001b[0m in \u001b[0;36mscatter\u001b[1;34m(self, x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, edgecolors, plotnonfinite, **kwargs)\u001b[0m\n\u001b[0;32m   4330\u001b[0m                 (not np.issubdtype(s.dtype, np.floating) and\n\u001b[0;32m   4331\u001b[0m                  not np.issubdtype(s.dtype, np.integer))):\n\u001b[1;32m-> 4332\u001b[1;33m             raise ValueError(\n\u001b[0m\u001b[0;32m   4333\u001b[0m                 \u001b[1;34m\"s must be a scalar, \"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   4334\u001b[0m                 \"or float array-like with the same size as x and y\")\n",
      "\u001b[1;31mValueError\u001b[0m: s must be a scalar, or float array-like with the same size as x and y"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#  一张图中显示，A和C的关系，同时显示B和D的关系\n",
    "#  创建子视图，返回值，视图\n",
    "ax = df4.plot.scatter(x = 'A', y = 'C', #  A比C关系\n",
    "                      color = 'DarkBlue',  #  散点图颜色\n",
    "                      label = 'Group1')  #  声明标签名称\n",
    "\n",
    "#  再次向ax中绘制图形\n",
    "df4.plot.scatter(x= 'B',y = 'D',color = 'DarkGreen',label = 'Group2', \n",
    "                 alpha = 0.5,  #  透明度\n",
    "                 s = np.random.randint(30,100,size = 100),  #  散点大小\n",
    "                 ax = ax)  #  表示向子视图ax中继续绘制"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4011b3e7",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 面积图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "51552163",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df5 = pd.DataFrame(np.random.rand(10,4),columns = list( 'ABCD'))\n",
    "df5.plot.area()\n",
    "df5.plot.area(stacked = True)  #  堆叠\n",
    "df5.plot.area(stacked = False) # 不堆叠"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5992f8c5",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 箱式图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "9326398c",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAD4CAYAAADxeG0DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAAALZklEQVR4nO3dfYhld33H8c+3MdjQqFAykqpZp6XWVuJD6VCwD4ittBYtqa0FU+ijsPhHoIK0rgYqpZRGBGkhBVmoVCVt/MOK0E01CRbSBy2dlaQ1pg9qI02RZrRttDTFJH77x852180kO7P3ZM787nm9YGHuneGc35659z2X3z2/c6u7A8C4vmnuAQCwGiEHGJyQAwxOyAEGJ+QAg3vaHDu96qqrenNzc45dAwzr9OnTX+rujQvvnyXkm5ub2d7enmPXAMOqqi/sdb+pFYDBCTnA4IQcYHBCDjA4IQcYnJADDE7IAQYn5ACDm2VBEDC/zROnJtnO/Te9ZpLtcOmEHBbqYgHePHFKpAdhagVgcEIOMDghBxickAMMTsgBBifkAIMTcoDBCTnA4IQcYHBCDjC4lUNeVddU1Z9X1Weq6t6q+tUpBgbA/kxxrZVHk7yluz9VVc9Icrqq7ujuz0ywbQAuYuWQd/cXk3xx9+uvVtV9SZ6bRMiPCFe5g/U26dUPq2ozyfcm+Zspt8tqXOUO1ttkb3ZW1ZVJPpTkzd39lT2+f7yqtqtqe2dnZ6rdAizeJCGvqstzJuK3dPef7PUz3X2yu7e6e2tjY2OK3QKQac5aqSR/kOS+7n736kMC4CCmmCP/wSQ/n+Tvq+ru3fve3t23TbBtmJQ3fllHU5y18pdJaoKxwFPOG7+sIys7AQYn5ACDE3KAwQk5wOAmXdkJMKLRz2YScmDxRj+bydQKwOCEHGBwQg4wOCEHGJyQAwxOyAEGJ+QAgxNygMEJOcDghBxgcEIOMDghBxjc2l40a/SrmQHs19qGfPSrmQHsl6kVgMEJOcDghBxgcEIOMDghBxickAMMTsgBBifkAIObZEFQVb03yWuTPNjd106xTfbvpb95ex56+JGVtrHqSthnXXF57nnHj620DablcbEcU63s/MMkNyd5/0Tb4wAeeviR2VepTnVJBKbjcbEck0ytdPddSf5jim0BcDCHNkdeVceraruqtnd2dg5rtwBr79BC3t0nu3uru7c2NjYOa7cAa89ZKwCDE3KAwU0S8qr64ySfSPLCqnqgqt44xXYBuLhJTj/s7uun2A4AB2dqBWBwQg4wOCEHGNzafvgyy+T6IiyRkLNWXF+EJTK1AjA4IQcYnJADDE7IAQbnzU5g7a372UzDhnzdfzHAdNb9bKZhQ77uv5iDeMb3nMiL33di5jEkyby/D1iqYUPOOV+97yZ/1GDBvNkJMDghBxickAMMTsgBBifkAIMTcoDBCTnA4IQcYHBCDjA4KzthTbl0w3II+ZqYe4n8s664fNb983gu3bAcQr4GVn2ybp44NfsTHrh05sgBBifkAIObJORV9eqq+seq+mxVzfvuCsDCrBzyqrosye8n+YkkL0pyfVW9aNXtArA/U7wi//4kn+3uz3f315LcmuS6CbYLwD5MEfLnJvnX824/sHvfN6iq41W1XVXbOzs7E+wWgOQQ3+zs7pPdvdXdWxsbG4e1W4C1N0XI/y3JNefdft7ufQAcgikWBP1tkhdU1bfnTMDfkOTnJtjuk7L8GOCMlUPe3Y9W1Q1JPpbksiTv7e57Vx7ZRVh+DHDGJEv0u/u2JLdNsS0ADsbKToDBCTnA4IQcYHBCDjA4IQcYnA+WYK1YX8Be1v1xIeSsFesL2Mu6Py6EHNbY3H9UfJbr4RDyBdjPk3k/PzP3KxoOxme5LoeQL4AnI6w3Z60ADE7IAQYn5ACDE3KAwQk5wOCEHGBwQg4wOOeRA4uwzqtchRxYe+u+ytXUCsDghBxgcEIOMDghBxickAMMTsgBBuf0Q9bOOp8vDHsRctbKup8vDHtZaWqlqn62qu6tqq9X1dZUgwJg/1adI/90kp9OctcEYwHgEqw0tdLd9yVJVU0zGgAO7NDmyKvqeJLjSXLs2LFJtulNLYB9hLyq7kxy9R7furG7P7LfHXX3ySQnk2Rra6v3PcIn4E0tgDMuGvLuftVhDASAS2NBEMDgVj398HVV9UCSlyc5VVUfm2ZYAOzXqmetfDjJhycaCwCXwNQKwOCEHGBwQg4wOCEHGJyQAwxOyAEGJ+QAgxNygMEJOcDghBxgcEIOMDghBxickAMMTsgBBifkAIMTcoDBrfTBEkfZ5olTk/yMD2gGjrq1DbkAA0thagVgcEIOMDghBxickAMMTsgBBifkAIMTcoDBCTnA4IQcYHArreysqncl+ckkX0vyuSS/3N3/NcG4AA7N6Jf0WHWJ/h1J3tbdj1bVO5O8LclbVx8WwOEZ/ZIeK02tdPft3f3o7s1PJnne6kMC4CCmnCP/lSR/9kTfrKrjVbVdVds7OzsT7hZg2S46tVJVdya5eo9v3djdH9n9mRuTPJrklifaTnefTHIySba2tvqSRgvA41w05N39qif7flX9UpLXJvnR7hZogEO26lkrr07y60le0d3/M82QADiIVc9auTnJ05PcUVVJ8snuftPKowKecqOfcsc5K4W8u79zqoEAh0uA14eVnQCDE3KAwQk5wOCEHGBwQg4wOCEHGJyQAwxOyAEGJ+QAgxNygMEJOcDghBxgcEIOMDghBxickAMMTsgBBifkAIMTcoDBCTnA4IQcYHBCDjA4IQcYnJADDE7IAQYn5ACDE3KAwQk5wOBWCnlV/VZV/V1V3V1Vt1fVc6YaGAD7s+or8nd190u6+2VJ/jTJb6w+JAAOYqWQd/dXzrv5LUl6teEAcFBPW3UDVfXbSX4hyUNJXvkkP3c8yfEkOXbs2Kq7BWDXRV+RV9WdVfXpPf5dlyTdfWN3X5PkliQ3PNF2uvtkd29199bGxsZ0/wOAhavuaWZDqupYktu6+9qL/ezW1lZvb29Psl84iM0TpybZzv03vWaS7cBBVNXp7t668P6Vplaq6gXd/c+7N69L8g+rbA+eagLMOlp1jvymqnphkq8n+UKSN60+JAAOYqWQd/fPTDUQAC6NlZ0AgxNygMEJOcDghBxgcEIOMDghBxjcZCs7D7TTqp2cOe98Tlcl+dLMYzgqHItzHItzHItzjsqxeH53P+4aJ7OE/Cioqu29lroukWNxjmNxjmNxzlE/FqZWAAYn5ACDW3LIT849gCPEsTjHsTjHsTjnSB+Lxc6RA6yLJb8iB1gLQg4wuEWGvKp+qqq6qr577rHMqaoeq6q7q+qeqvpUVf3A3GOaS1VdXVW3VtXnqup0Vd1WVd8197gO23mPiXt3HxdvqapFdiL5huNx9t+Juce0l0XOkVfVB5M8J8nHu/sdc49nLlX139195e7XP57k7d39ipmHdeiqqpL8dZL3dfd7du97aZJndvdfzDq4Q3bBY+LZSf4oyV8t9Xly/vE4yhb3l7aqrkzyQ0nemOQNMw/nKHlmkv+cexAzeWWSR85GPEm6+56lRfxC3f1gkuNJbtj9Y8cRtepHvY3ouiQf7e5/qqovV9X3dffpuQc1kyuq6u4k35zk25L8yLzDmc21SZb6GHhS3f35qrosybOT/Pvc45nB2efIWb/T3R+cazBPZIkhvz7J7+1+fevu7aU+iR/u7pclSVW9PMn7q+raXuJ8G+zt/58jR9miQl5V35ozrzpfXFWd5LIkXVW/tvR4dfcnquqqJBtJHpx7PIfs3iSvn3sQR1FVfUeSx7K8x8RQljZH/vokH+ju53f3Zndfk+RfkvzwzOOa3e4ZPJcl+fLcY5nBx5M8vaqOn72jql5SVYt+XFTVRpL3JLl56S90jrpFvSLPmWmUd15w34d277/r8Iczu/Pn/yrJL3b3YzOOZxbd3VX1uiS/W1VvTfK/Se5P8uY5xzWTs4+Jy5M8muQDSd4964jmdeEc+Ue7+8idgrjI0w8B1snSplYA1o6QAwxOyAEGJ+QAgxNygMEJOcDghBxgcP8H1dToiltoLJwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#  特殊的条形图，表示数据分布情况\n",
    "df6 = pd.DataFrame(np.random.randn(20,5),columns=list('ABCDE'))\n",
    "df6.plot.box()  #  绿色线表示中位数，上四分之一，下四分之一,圆点是异常值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "983d6a54",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>20.00</td>\n",
       "      <td>20.00</td>\n",
       "      <td>20.00</td>\n",
       "      <td>20.00</td>\n",
       "      <td>20.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>-0.17</td>\n",
       "      <td>0.63</td>\n",
       "      <td>-0.13</td>\n",
       "      <td>0.20</td>\n",
       "      <td>-0.07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.90</td>\n",
       "      <td>0.66</td>\n",
       "      <td>1.23</td>\n",
       "      <td>1.22</td>\n",
       "      <td>1.09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>-1.63</td>\n",
       "      <td>-0.39</td>\n",
       "      <td>-3.06</td>\n",
       "      <td>-2.11</td>\n",
       "      <td>-1.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>-1.00</td>\n",
       "      <td>0.19</td>\n",
       "      <td>-0.88</td>\n",
       "      <td>-0.38</td>\n",
       "      <td>-0.64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>-0.09</td>\n",
       "      <td>0.52</td>\n",
       "      <td>-0.30</td>\n",
       "      <td>0.22</td>\n",
       "      <td>-0.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>0.55</td>\n",
       "      <td>1.07</td>\n",
       "      <td>0.73</td>\n",
       "      <td>1.08</td>\n",
       "      <td>0.57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1.34</td>\n",
       "      <td>2.04</td>\n",
       "      <td>1.92</td>\n",
       "      <td>2.43</td>\n",
       "      <td>1.75</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           A      B      C      D      E\n",
       "count  20.00  20.00  20.00  20.00  20.00\n",
       "mean   -0.17   0.63  -0.13   0.20  -0.07\n",
       "std     0.90   0.66   1.23   1.22   1.09\n",
       "min    -1.63  -0.39  -3.06  -2.11  -1.92\n",
       "25%    -1.00   0.19  -0.88  -0.38  -0.64\n",
       "50%    -0.09   0.52  -0.30   0.22  -0.32\n",
       "75%     0.55   1.07   0.73   1.08   0.57\n",
       "max     1.34   2.04   1.92   2.43   1.75"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df6.describe().round(2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d96bf918",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### 直方图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "50d146d9",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-4.211439</td>\n",
       "      <td>-0.781962</td>\n",
       "      <td>2.692518</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-2.090665</td>\n",
       "      <td>0.261579</td>\n",
       "      <td>1.331187</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-2.740676</td>\n",
       "      <td>1.273194</td>\n",
       "      <td>1.405757</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.916625</td>\n",
       "      <td>-0.789304</td>\n",
       "      <td>2.419192</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-3.734505</td>\n",
       "      <td>0.986750</td>\n",
       "      <td>2.200434</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>995</th>\n",
       "      <td>-4.166627</td>\n",
       "      <td>-0.201953</td>\n",
       "      <td>0.662957</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>996</th>\n",
       "      <td>-1.085581</td>\n",
       "      <td>-0.718105</td>\n",
       "      <td>0.273721</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>997</th>\n",
       "      <td>-3.210727</td>\n",
       "      <td>0.457187</td>\n",
       "      <td>2.550666</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>998</th>\n",
       "      <td>0.075585</td>\n",
       "      <td>-1.405998</td>\n",
       "      <td>1.791354</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>999</th>\n",
       "      <td>-2.856269</td>\n",
       "      <td>-0.279960</td>\n",
       "      <td>1.669470</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            A         B         C\n",
       "0   -4.211439 -0.781962  2.692518\n",
       "1   -2.090665  0.261579  1.331187\n",
       "2   -2.740676  1.273194  1.405757\n",
       "3   -0.916625 -0.789304  2.419192\n",
       "4   -3.734505  0.986750  2.200434\n",
       "..        ...       ...       ...\n",
       "995 -4.166627 -0.201953  0.662957\n",
       "996 -1.085581 -0.718105  0.273721\n",
       "997 -3.210727  0.457187  2.550666\n",
       "998  0.075585 -1.405998  1.791354\n",
       "999 -2.856269 -0.279960  1.669470\n",
       "\n",
       "[1000 rows x 3 columns]"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 表示概率，和分布，一种形式的条形图\n",
    "df7 = pd.DataFrame(data={'A':np.random.randn(1000) - 2 ,\n",
    "                        'B':np.random.randn(1000),\n",
    "                        'C':np.random.randn(1000) + 2})\n",
    "df7"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "05160081",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:ylabel='Frequency'>"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df7.plot.hist()\n",
    "df7.plot.hist(stacked = True,#  堆叠\n",
    "             alpha = 0.5)  #  透明度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "ebb40971",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'df7' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_6680/1553071248.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[1;31m#  子视图\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mdf7\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mhist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfigsize\u001b[0m\u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;36m9\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m9\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;31m#  3个属性各绘制了直方图,figsize调整图形大小\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m: name 'df7' is not defined"
     ]
    }
   ],
   "source": [
    "#  子视图\n",
    "df7.hist(figsize= (9,9) )#  3个属性各绘制了直方图,figsize调整图形大小"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9a27b4db",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 拉勾网数据分析师招聘数据分析"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4dae1b5a",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 加载、查看、去重"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "5dc3c6a1",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "239f4e6c",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(3683, 12)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job = pd.read_csv('./lagou2020.csv')\n",
    "job.shape   #  查看数据条数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "50591c0f",
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>positionName</th>\n",
       "      <th>companyShortName</th>\n",
       "      <th>city</th>\n",
       "      <th>companySize</th>\n",
       "      <th>education</th>\n",
       "      <th>financeStage</th>\n",
       "      <th>industryField</th>\n",
       "      <th>salary</th>\n",
       "      <th>workYear</th>\n",
       "      <th>hitags</th>\n",
       "      <th>companyLabelList</th>\n",
       "      <th>job_detail</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>拉勾网</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>本科</td>\n",
       "      <td>D轮及以上</td>\n",
       "      <td>企业服务</td>\n",
       "      <td>25k-35k</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>[\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...</td>\n",
       "      <td>[\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]</td>\n",
       "      <td>\\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>数据分析师</td>\n",
       "      <td>OK Group</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>大专</td>\n",
       "      <td>B轮</td>\n",
       "      <td>金融</td>\n",
       "      <td>25k-45k</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]</td>\n",
       "      <td>\\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>15k-25k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>15k-25k</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>数据分析师</td>\n",
       "      <td>京东集团</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>电商</td>\n",
       "      <td>15k-30k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>[\"免费班车\",\"免费体检\",\"地铁周边\"]</td>\n",
       "      <td>[\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]</td>\n",
       "      <td>\\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  positionName companyShortName city companySize education financeStage  \\\n",
       "0      高级数据分析师              拉勾网   北京   500-2000人        本科        D轮及以上   \n",
       "1        数据分析师         OK Group   北京   500-2000人        大专           B轮   \n",
       "2      高级数据分析师           金山办公软件   北京     2000人以上        本科         上市公司   \n",
       "3        数据分析师           金山办公软件   北京     2000人以上        本科         上市公司   \n",
       "4        数据分析师             京东集团   北京     2000人以上        本科         上市公司   \n",
       "\n",
       "  industryField   salary workYear  \\\n",
       "0          企业服务  25k-35k    5-10年   \n",
       "1            金融  25k-45k    5-10年   \n",
       "2         移动互联网  15k-25k     3-5年   \n",
       "3         移动互联网  15k-25k     1-3年   \n",
       "4            电商  15k-30k     3-5年   \n",
       "\n",
       "                                              hitags  \\\n",
       "0  [\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...   \n",
       "1                                                NaN   \n",
       "2                                                NaN   \n",
       "3                                                NaN   \n",
       "4                             [\"免费班车\",\"免费体检\",\"地铁周边\"]   \n",
       "\n",
       "                companyLabelList  \\\n",
       "0  [\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]   \n",
       "1   [\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]   \n",
       "2  [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "3  [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "4  [\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]   \n",
       "\n",
       "                                          job_detail  \n",
       "0  \\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...  \n",
       "1  \\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...  \n",
       "2  \\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...  \n",
       "3  \\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...  \n",
       "4  \\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...  "
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job.head()  #  查看又哪些字段"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "58375657",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['北京', '上海', '深圳', '广州', '杭州', '成都', '南京', '武汉', '西安', '厦门', '长沙',\n",
       "       '苏州', '天津'], dtype=object)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job.city.unique()  #  指定字段去重"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "e55f0e28",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "job.drop_duplicates(inplace=True)  #  去重在原来基础上替换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "ae77d1ad",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(3507, 12)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "ca81fabd",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "job.reset_index(inplace=True)  #  重新配置行索引（因为去重后有缺失）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "3cf83021",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>positionName</th>\n",
       "      <th>companyShortName</th>\n",
       "      <th>city</th>\n",
       "      <th>companySize</th>\n",
       "      <th>education</th>\n",
       "      <th>financeStage</th>\n",
       "      <th>industryField</th>\n",
       "      <th>salary</th>\n",
       "      <th>workYear</th>\n",
       "      <th>hitags</th>\n",
       "      <th>companyLabelList</th>\n",
       "      <th>job_detail</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>拉勾网</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>本科</td>\n",
       "      <td>D轮及以上</td>\n",
       "      <td>企业服务</td>\n",
       "      <td>25k-35k</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>[\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...</td>\n",
       "      <td>[\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]</td>\n",
       "      <td>\\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>OK Group</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>大专</td>\n",
       "      <td>B轮</td>\n",
       "      <td>金融</td>\n",
       "      <td>25k-45k</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]</td>\n",
       "      <td>\\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>15k-25k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>15k-25k</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>京东集团</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>电商</td>\n",
       "      <td>15k-30k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>[\"免费班车\",\"免费体检\",\"地铁周边\"]</td>\n",
       "      <td>[\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]</td>\n",
       "      <td>\\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   index positionName companyShortName city companySize education  \\\n",
       "0      0      高级数据分析师              拉勾网   北京   500-2000人        本科   \n",
       "1      1        数据分析师         OK Group   北京   500-2000人        大专   \n",
       "2      2      高级数据分析师           金山办公软件   北京     2000人以上        本科   \n",
       "3      3        数据分析师           金山办公软件   北京     2000人以上        本科   \n",
       "4      4        数据分析师             京东集团   北京     2000人以上        本科   \n",
       "\n",
       "  financeStage industryField   salary workYear  \\\n",
       "0        D轮及以上          企业服务  25k-35k    5-10年   \n",
       "1           B轮            金融  25k-45k    5-10年   \n",
       "2         上市公司         移动互联网  15k-25k     3-5年   \n",
       "3         上市公司         移动互联网  15k-25k     1-3年   \n",
       "4         上市公司            电商  15k-30k     3-5年   \n",
       "\n",
       "                                              hitags  \\\n",
       "0  [\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...   \n",
       "1                                                NaN   \n",
       "2                                                NaN   \n",
       "3                                                NaN   \n",
       "4                             [\"免费班车\",\"免费体检\",\"地铁周边\"]   \n",
       "\n",
       "                companyLabelList  \\\n",
       "0  [\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]   \n",
       "1   [\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]   \n",
       "2  [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "3  [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "4  [\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]   \n",
       "\n",
       "                                          job_detail  \n",
       "0  \\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...  \n",
       "1  \\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...  \n",
       "2  \\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...  \n",
       "3  \\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...  \n",
       "4  \\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...  "
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "229347b7",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 过滤非需要信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "b6aea44c",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0        True\n",
       "1        True\n",
       "2        True\n",
       "3        True\n",
       "4        True\n",
       "        ...  \n",
       "3502    False\n",
       "3503    False\n",
       "3504    False\n",
       "3505    False\n",
       "3506    False\n",
       "Name: positionName, Length: 3507, dtype: bool"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  str是获取字符串文本信息，contains字符串当中的方法，进行逻辑判断，是否含有。\n",
    "cond = job['positionName'].str.contains('数据分析') #  指定列，查找含有'数据分析'字符的行\n",
    "cond"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "a1361c51",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1652, 13)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job = job[cond]  #  接收cond的数据\n",
    "job.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "5b5cb593",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "job.reset_index(inplace=True)  #  重置行索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "60ac5e87",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>level_0</th>\n",
       "      <th>index</th>\n",
       "      <th>positionName</th>\n",
       "      <th>companyShortName</th>\n",
       "      <th>city</th>\n",
       "      <th>companySize</th>\n",
       "      <th>education</th>\n",
       "      <th>financeStage</th>\n",
       "      <th>industryField</th>\n",
       "      <th>salary</th>\n",
       "      <th>workYear</th>\n",
       "      <th>hitags</th>\n",
       "      <th>companyLabelList</th>\n",
       "      <th>job_detail</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>拉勾网</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>本科</td>\n",
       "      <td>D轮及以上</td>\n",
       "      <td>企业服务</td>\n",
       "      <td>25k-35k</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>[\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...</td>\n",
       "      <td>[\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]</td>\n",
       "      <td>\\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>OK Group</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>大专</td>\n",
       "      <td>B轮</td>\n",
       "      <td>金融</td>\n",
       "      <td>25k-45k</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]</td>\n",
       "      <td>\\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>15k-25k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>15k-25k</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>京东集团</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>电商</td>\n",
       "      <td>15k-30k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>[\"免费班车\",\"免费体检\",\"地铁周边\"]</td>\n",
       "      <td>[\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]</td>\n",
       "      <td>\\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1647</th>\n",
       "      <td>3177</td>\n",
       "      <td>3352</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>华泛信息</td>\n",
       "      <td>苏州</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>大专</td>\n",
       "      <td>不需要融资</td>\n",
       "      <td>移动互联网,其他</td>\n",
       "      <td>10k-15k</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"技能培训\",\"节日礼物\",\"带薪年假\",\"绩效奖金\"]</td>\n",
       "      <td>\\n岗位职责：\\n深入了解项目组的业务需求,在此基础上进行数据收集、数据分析、商业报告的撰写...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1648</th>\n",
       "      <td>3178</td>\n",
       "      <td>3353</td>\n",
       "      <td>大数据分析师</td>\n",
       "      <td>德融嘉信</td>\n",
       "      <td>苏州</td>\n",
       "      <td>50-150人</td>\n",
       "      <td>本科</td>\n",
       "      <td>不需要融资</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>6k-12k</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[]</td>\n",
       "      <td>\\n岗位职责：\\n1. 开展业务专题分析，使用数据挖掘各类算法构建相关的业务模型，完成业务分...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1649</th>\n",
       "      <td>3404</td>\n",
       "      <td>3580</td>\n",
       "      <td>ETL/大数据/数据分析/实施</td>\n",
       "      <td>格蒂电力</td>\n",
       "      <td>天津</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>大专</td>\n",
       "      <td>未融资</td>\n",
       "      <td>企业服务</td>\n",
       "      <td>6k-12k</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"技能培训\",\"带薪年假\",\"绩效奖金\",\"岗位晋升\"]</td>\n",
       "      <td>\\n工作职责\\n1.   负责数据接入、数据整合中的链路配置与调度配置工作。\\n职位要求\\n...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1650</th>\n",
       "      <td>3405</td>\n",
       "      <td>3581</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>吉城美家</td>\n",
       "      <td>天津</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>未融资</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>7k-14k</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"五险一金\",\"岗位晋升\"]</td>\n",
       "      <td>\\n负责站点日常数据分析、提前通过数据分析对业务有预测性、通过数据说话、解决站点管理问题、\\n</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1651</th>\n",
       "      <td>3406</td>\n",
       "      <td>3582</td>\n",
       "      <td>数据分析支持</td>\n",
       "      <td>云链供应链</td>\n",
       "      <td>天津</td>\n",
       "      <td>15-50人</td>\n",
       "      <td>本科</td>\n",
       "      <td>未融资</td>\n",
       "      <td>金融,企业服务</td>\n",
       "      <td>4k-6k</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[]</td>\n",
       "      <td>\\n        岗位职责：\\n1、负责部门日常数据报表的制定、维护、优化；\\n2、支持运...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1652 rows × 14 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      level_0  index     positionName companyShortName city companySize  \\\n",
       "0           0      0          高级数据分析师              拉勾网   北京   500-2000人   \n",
       "1           1      1            数据分析师         OK Group   北京   500-2000人   \n",
       "2           2      2          高级数据分析师           金山办公软件   北京     2000人以上   \n",
       "3           3      3            数据分析师           金山办公软件   北京     2000人以上   \n",
       "4           4      4            数据分析师             京东集团   北京     2000人以上   \n",
       "...       ...    ...              ...              ...  ...         ...   \n",
       "1647     3177   3352            数据分析师             华泛信息   苏州     2000人以上   \n",
       "1648     3178   3353           大数据分析师             德融嘉信   苏州     50-150人   \n",
       "1649     3404   3580  ETL/大数据/数据分析/实施             格蒂电力   天津   500-2000人   \n",
       "1650     3405   3581            数据分析师             吉城美家   天津     2000人以上   \n",
       "1651     3406   3582           数据分析支持            云链供应链   天津      15-50人   \n",
       "\n",
       "     education financeStage industryField   salary workYear  \\\n",
       "0           本科        D轮及以上          企业服务  25k-35k    5-10年   \n",
       "1           大专           B轮            金融  25k-45k    5-10年   \n",
       "2           本科         上市公司         移动互联网  15k-25k     3-5年   \n",
       "3           本科         上市公司         移动互联网  15k-25k     1-3年   \n",
       "4           本科         上市公司            电商  15k-30k     3-5年   \n",
       "...        ...          ...           ...      ...      ...   \n",
       "1647        大专        不需要融资      移动互联网,其他  10k-15k     1-3年   \n",
       "1648        本科        不需要融资         移动互联网   6k-12k     1-3年   \n",
       "1649        大专          未融资          企业服务   6k-12k     3-5年   \n",
       "1650        本科          未融资         移动互联网   7k-14k     1-3年   \n",
       "1651        本科          未融资       金融,企业服务    4k-6k     1-3年   \n",
       "\n",
       "                                                 hitags  \\\n",
       "0     [\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...   \n",
       "1                                                   NaN   \n",
       "2                                                   NaN   \n",
       "3                                                   NaN   \n",
       "4                                [\"免费班车\",\"免费体检\",\"地铁周边\"]   \n",
       "...                                                 ...   \n",
       "1647                                                NaN   \n",
       "1648                                                NaN   \n",
       "1649                                                NaN   \n",
       "1650                                                NaN   \n",
       "1651                                                NaN   \n",
       "\n",
       "                   companyLabelList  \\\n",
       "0     [\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]   \n",
       "1      [\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]   \n",
       "2     [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "3     [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "4     [\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]   \n",
       "...                             ...   \n",
       "1647  [\"技能培训\",\"节日礼物\",\"带薪年假\",\"绩效奖金\"]   \n",
       "1648                             []   \n",
       "1649  [\"技能培训\",\"带薪年假\",\"绩效奖金\",\"岗位晋升\"]   \n",
       "1650                [\"五险一金\",\"岗位晋升\"]   \n",
       "1651                             []   \n",
       "\n",
       "                                             job_detail  \n",
       "0     \\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...  \n",
       "1     \\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...  \n",
       "2     \\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...  \n",
       "3     \\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...  \n",
       "4     \\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...  \n",
       "...                                                 ...  \n",
       "1647  \\n岗位职责：\\n深入了解项目组的业务需求,在此基础上进行数据收集、数据分析、商业报告的撰写...  \n",
       "1648  \\n岗位职责：\\n1. 开展业务专题分析，使用数据挖掘各类算法构建相关的业务模型，完成业务分...  \n",
       "1649  \\n工作职责\\n1.   负责数据接入、数据整合中的链路配置与调度配置工作。\\n职位要求\\n...  \n",
       "1650    \\n负责站点日常数据分析、提前通过数据分析对业务有预测性、通过数据说话、解决站点管理问题、\\n  \n",
       "1651  \\n        岗位职责：\\n1、负责部门日常数据报表的制定、维护、优化；\\n2、支持运...  \n",
       "\n",
       "[1652 rows x 14 columns]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5387514c",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 薪水"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "e8a081a9",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "ename": "IndentationError",
     "evalue": "unexpected indent (Temp/ipykernel_6680/281487449.py, line 3)",
     "output_type": "error",
     "traceback": [
      "\u001b[1;36m  File \u001b[1;32m\"C:\\Users\\Guowei\\AppData\\Local\\Temp/ipykernel_6680/281487449.py\"\u001b[1;36m, line \u001b[1;32m3\u001b[0m\n\u001b[1;33m    job['salary'] = job['salary'].str.lower().str.extract(r'(\\d+)[k]-(\\d+)[k]').applymap(lambda x : int(x)).mean(axis = 1)\u001b[0m\n\u001b[1;37m    ^\u001b[0m\n\u001b[1;31mIndentationError\u001b[0m\u001b[1;31m:\u001b[0m unexpected indent\n"
     ]
    }
   ],
   "source": [
    "#  提取数字，d表示数字+号表示1个或多个（要的是小括号内的数字）\n",
    "#   applymap和map类似，map操作Series，applymap操作Dataframe\n",
    "#  str.lowes 是把字符串大写变成小写，extract是提取\n",
    " job['salary'] = job['salary'].str.lower().str.extract(r'(\\d+)[k]-(\\d+)[k]').applymap(lambda x : int(x)).mean(axis = 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bd1b1084",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 技能要求"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "646c7c42",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'Python' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_6680/709762682.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mPython\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mSQL\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[0mTableau\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[0mExcel\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[0mSPSS\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0mSAS\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'Python' is not defined"
     ]
    }
   ],
   "source": [
    "Python  \n",
    "SQL  \n",
    "Tableau  \n",
    "Excel  \n",
    "SPSS/SAS  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "6d7174f7",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Guowei\\AppData\\Local\\Temp/ipykernel_6680/362861607.py:1: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  job['job_detail'] = job['job_detail'].str.lower()  #  指定列变成小写\n"
     ]
    }
   ],
   "source": [
    "job['job_detail'] = job['job_detail'].str.lower()  #  指定列变成小写"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "e38e7185",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Guowei\\AppData\\Local\\Temp/ipykernel_6680/4160202236.py:1: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  job['python'] = job['job_detail'].map(lambda x :1 if 'python' in x else 0)\n",
      "C:\\Users\\Guowei\\AppData\\Local\\Temp/ipykernel_6680/4160202236.py:2: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  job['SQL'] =  job['job_detail'].map(lambda x :1 if 'sql' in x else 0)\n",
      "C:\\Users\\Guowei\\AppData\\Local\\Temp/ipykernel_6680/4160202236.py:3: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  job['Tableat'] =  job['job_detail'].map(lambda x :1 if 'tableau' in x else 0)\n",
      "C:\\Users\\Guowei\\AppData\\Local\\Temp/ipykernel_6680/4160202236.py:4: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  job['Excel'] =  job['job_detail'].map(lambda x :1 if 'excel' in x else 0)\n",
      "C:\\Users\\Guowei\\AppData\\Local\\Temp/ipykernel_6680/4160202236.py:5: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  job['SPSS/SAS'] =  job['job_detail'].map(lambda x :1 if ('spss' in x ) or ('sas' in x ) else 0)\n"
     ]
    }
   ],
   "source": [
    "job['python'] = job['job_detail'].map(lambda x :1 if 'python' in x else 0)\n",
    "job['SQL'] =  job['job_detail'].map(lambda x :1 if 'sql' in x else 0)\n",
    "job['Tableat'] =  job['job_detail'].map(lambda x :1 if 'tableau' in x else 0)\n",
    "job['Excel'] =  job['job_detail'].map(lambda x :1 if 'excel' in x else 0)\n",
    "job['SPSS/SAS'] =  job['job_detail'].map(lambda x :1 if ('spss' in x ) or ('sas' in x ) else 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "036b14f9",
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>level_0</th>\n",
       "      <th>index</th>\n",
       "      <th>positionName</th>\n",
       "      <th>companyShortName</th>\n",
       "      <th>city</th>\n",
       "      <th>companySize</th>\n",
       "      <th>education</th>\n",
       "      <th>financeStage</th>\n",
       "      <th>industryField</th>\n",
       "      <th>salary</th>\n",
       "      <th>workYear</th>\n",
       "      <th>hitags</th>\n",
       "      <th>companyLabelList</th>\n",
       "      <th>job_detail</th>\n",
       "      <th>python</th>\n",
       "      <th>SQL</th>\n",
       "      <th>Tableat</th>\n",
       "      <th>Excel</th>\n",
       "      <th>SPSS/SAS</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>拉勾网</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>本科</td>\n",
       "      <td>D轮及以上</td>\n",
       "      <td>企业服务</td>\n",
       "      <td>30.0</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>[\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...</td>\n",
       "      <td>[\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]</td>\n",
       "      <td>\\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>OK Group</td>\n",
       "      <td>北京</td>\n",
       "      <td>500-2000人</td>\n",
       "      <td>大专</td>\n",
       "      <td>B轮</td>\n",
       "      <td>金融</td>\n",
       "      <td>35.0</td>\n",
       "      <td>5-10年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]</td>\n",
       "      <td>\\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>高级数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>20.0</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>金山办公软件</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>移动互联网</td>\n",
       "      <td>20.0</td>\n",
       "      <td>1-3年</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]</td>\n",
       "      <td>\\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>数据分析师</td>\n",
       "      <td>京东集团</td>\n",
       "      <td>北京</td>\n",
       "      <td>2000人以上</td>\n",
       "      <td>本科</td>\n",
       "      <td>上市公司</td>\n",
       "      <td>电商</td>\n",
       "      <td>22.5</td>\n",
       "      <td>3-5年</td>\n",
       "      <td>[\"免费班车\",\"免费体检\",\"地铁周边\"]</td>\n",
       "      <td>[\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]</td>\n",
       "      <td>\\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   level_0  index positionName companyShortName city companySize education  \\\n",
       "0        0      0      高级数据分析师              拉勾网   北京   500-2000人        本科   \n",
       "1        1      1        数据分析师         OK Group   北京   500-2000人        大专   \n",
       "2        2      2      高级数据分析师           金山办公软件   北京     2000人以上        本科   \n",
       "3        3      3        数据分析师           金山办公软件   北京     2000人以上        本科   \n",
       "4        4      4        数据分析师             京东集团   北京     2000人以上        本科   \n",
       "\n",
       "  financeStage industryField  salary workYear  \\\n",
       "0        D轮及以上          企业服务    30.0    5-10年   \n",
       "1           B轮            金融    35.0    5-10年   \n",
       "2         上市公司         移动互联网    20.0     3-5年   \n",
       "3         上市公司         移动互联网    20.0     1-3年   \n",
       "4         上市公司            电商    22.5     3-5年   \n",
       "\n",
       "                                              hitags  \\\n",
       "0  [\"免费下午茶\",\"ipo倒计时\",\"bat背景\",\"地铁周边\",\"每天管两餐\",\"定期团建...   \n",
       "1                                                NaN   \n",
       "2                                                NaN   \n",
       "3                                                NaN   \n",
       "4                             [\"免费班车\",\"免费体检\",\"地铁周边\"]   \n",
       "\n",
       "                companyLabelList  \\\n",
       "0  [\"五险一金\",\"弹性工作\",\"带薪年假\",\"免费两餐\"]   \n",
       "1   [\"节日礼物\",\"年度旅游\",\"扁平管理\",\"领导好\"]   \n",
       "2  [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "3  [\"年底双薪\",\"节日礼物\",\"技能培训\",\"绩效奖金\"]   \n",
       "4  [\"五险一金\",\"带薪年假\",\"免费班车\",\"定期体检\"]   \n",
       "\n",
       "                                          job_detail  python  SQL  Tableat  \\\n",
       "0  \\n1.搭建数据指标框架，完整并准确反映业务趋势和变化，及时发现和定位问题\\n2.独立完成数...       1    1        0   \n",
       "1  \\n工作职责：\\n1. 负责建立交易平台日常分析体系，包括核心指标体系、报表体系，专题活动分...       0    1        0   \n",
       "2  \\n职位描述：1.对亿计的办公用户数据进行深度挖掘，引导产品、运营，并能实际应用到业务中带来...       1    1        0   \n",
       "3  \\n工作职责：-负责日常运营、业务数据等分析-针对产品需求做深入的数据分析报告，分析用户行为...       0    1        0   \n",
       "4  \\n【数据分析师岗】\\n岗位要求：\\n1、构建及维护客户体验相关数据报表平台；\\n2、与大数...       0    1        1   \n",
       "\n",
       "   Excel  SPSS/SAS  \n",
       "0      0         0  \n",
       "1      0         0  \n",
       "2      0         0  \n",
       "3      0         1  \n",
       "4      1         1  "
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c3e543c1",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "### 行业信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "f3763a08",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0           企业服务\n",
       "1             金融\n",
       "2          移动互联网\n",
       "3          移动互联网\n",
       "4             电商\n",
       "5             教育\n",
       "6             金融\n",
       "7          移动互联网\n",
       "8     移动互联网,消费生活\n",
       "9          移动互联网\n",
       "10      移动互联网,电商\n",
       "11       游戏,数据服务\n",
       "12      移动互联网,电商\n",
       "13      移动互联网,电商\n",
       "14          消费生活\n",
       "15         移动互联网\n",
       "16      移动互联网,金融\n",
       "17            硬件\n",
       "18            教育\n",
       "19    移动互联网,数据服务\n",
       "20      移动互联网,教育\n",
       "21         文娱丨内容\n",
       "22         移动互联网\n",
       "23      移动互联网,教育\n",
       "24    移动互联网,数据服务\n",
       "25      移动互联网,社交\n",
       "26    移动互联网,数据服务\n",
       "27            金融\n",
       "28    移动互联网,数据服务\n",
       "29    移动互联网,数据服务\n",
       "Name: industryField, dtype: object"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "job['industryField'][:30]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "990df22c",
   "metadata": {
    "collapsed": true,
    "hidden": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Guowei\\AppData\\Local\\Temp/ipykernel_6680/2318938942.py:8: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  job['industryField'] = job.industryField.map(convert)\n"
     ]
    }
   ],
   "source": [
    "def convert(x):\n",
    "    field = x.split(',')    #  split拆分\n",
    "    if (field[0] == '移动互联网') & (len(field) > 1):   #  如果等于移动互联网并且长度大于1，那么返回索引1\n",
    "        return field[1]\n",
    "    else:\n",
    "        return field[0]       #  如果不符合以上条件还是返回原来数值\n",
    "\n",
    "job['industryField'] = job.industryField.map(convert)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "79598c13",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'job' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_24004/1905460344.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mjob\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindustryField\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m30\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m: name 'job' is not defined"
     ]
    }
   ],
   "source": [
    "job.industryField[:30]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7605cd0e",
   "metadata": {},
   "source": [
    "## 作业"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0370552e",
   "metadata": {},
   "source": [
    "### 数据处理、清洗"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f612091f",
   "metadata": {},
   "outputs": [],
   "source": [
    "sports1 = pd.read_excel('./18级高一体测成绩汇总.xls')  #  加载第一个工作表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "2687a0b2",
   "metadata": {},
   "outputs": [],
   "source": [
    "sports2 = pd.read_excel('./18级高一体测成绩汇总.xls',sheet_name = 1)#  加载第二个工作表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "77621989",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th colspan=\"2\" halign=\"left\">男肺活量</th>\n",
       "      <th colspan=\"2\" halign=\"left\">女肺活量</th>\n",
       "      <th colspan=\"2\" halign=\"left\">男50米跑</th>\n",
       "      <th colspan=\"2\" halign=\"left\">女50米跑</th>\n",
       "      <th colspan=\"2\" halign=\"left\">男体前屈</th>\n",
       "      <th>...</th>\n",
       "      <th colspan=\"2\" halign=\"left\">女跳远</th>\n",
       "      <th colspan=\"2\" halign=\"left\">男引体</th>\n",
       "      <th colspan=\"2\" halign=\"left\">女仰卧</th>\n",
       "      <th colspan=\"2\" halign=\"left\">男1000米跑</th>\n",
       "      <th colspan=\"2\" halign=\"left\">女800米跑</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>成绩</th>\n",
       "      <th>分数</th>\n",
       "      <th>成绩</th>\n",
       "      <th>分数</th>\n",
       "      <th>成绩</th>\n",
       "      <th>分数</th>\n",
       "      <th>成绩</th>\n",
       "      <th>分数</th>\n",
       "      <th>成绩</th>\n",
       "      <th>分数</th>\n",
       "      <th>...</th>\n",
       "      <th>成绩</th>\n",
       "      <th>分数</th>\n",
       "      <th>成绩</th>\n",
       "      <th>分数</th>\n",
       "      <th>成绩</th>\n",
       "      <th>分数</th>\n",
       "      <th>成绩</th>\n",
       "      <th>分数</th>\n",
       "      <th>成绩</th>\n",
       "      <th>分数</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4540</td>\n",
       "      <td>100</td>\n",
       "      <td>3150</td>\n",
       "      <td>100</td>\n",
       "      <td>7.1</td>\n",
       "      <td>100</td>\n",
       "      <td>7.8</td>\n",
       "      <td>100</td>\n",
       "      <td>23.6</td>\n",
       "      <td>100</td>\n",
       "      <td>...</td>\n",
       "      <td>204</td>\n",
       "      <td>100</td>\n",
       "      <td>16.0</td>\n",
       "      <td>100</td>\n",
       "      <td>53</td>\n",
       "      <td>100</td>\n",
       "      <td>3'30\"</td>\n",
       "      <td>100</td>\n",
       "      <td>3'24\"</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4420</td>\n",
       "      <td>95</td>\n",
       "      <td>3100</td>\n",
       "      <td>95</td>\n",
       "      <td>7.2</td>\n",
       "      <td>95</td>\n",
       "      <td>7.9</td>\n",
       "      <td>95</td>\n",
       "      <td>21.5</td>\n",
       "      <td>95</td>\n",
       "      <td>...</td>\n",
       "      <td>198</td>\n",
       "      <td>95</td>\n",
       "      <td>15.0</td>\n",
       "      <td>95</td>\n",
       "      <td>51</td>\n",
       "      <td>95</td>\n",
       "      <td>3'35\"</td>\n",
       "      <td>95</td>\n",
       "      <td>3'30\"</td>\n",
       "      <td>95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4300</td>\n",
       "      <td>90</td>\n",
       "      <td>3050</td>\n",
       "      <td>90</td>\n",
       "      <td>7.3</td>\n",
       "      <td>90</td>\n",
       "      <td>8.0</td>\n",
       "      <td>90</td>\n",
       "      <td>19.4</td>\n",
       "      <td>90</td>\n",
       "      <td>...</td>\n",
       "      <td>192</td>\n",
       "      <td>90</td>\n",
       "      <td>14.0</td>\n",
       "      <td>90</td>\n",
       "      <td>49</td>\n",
       "      <td>90</td>\n",
       "      <td>3'40\"</td>\n",
       "      <td>90</td>\n",
       "      <td>3'36\"</td>\n",
       "      <td>90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4050</td>\n",
       "      <td>85</td>\n",
       "      <td>2900</td>\n",
       "      <td>85</td>\n",
       "      <td>7.4</td>\n",
       "      <td>85</td>\n",
       "      <td>8.3</td>\n",
       "      <td>85</td>\n",
       "      <td>17.2</td>\n",
       "      <td>85</td>\n",
       "      <td>...</td>\n",
       "      <td>185</td>\n",
       "      <td>85</td>\n",
       "      <td>13.0</td>\n",
       "      <td>85</td>\n",
       "      <td>46</td>\n",
       "      <td>85</td>\n",
       "      <td>3'47\"</td>\n",
       "      <td>85</td>\n",
       "      <td>3'43\"</td>\n",
       "      <td>85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3800</td>\n",
       "      <td>80</td>\n",
       "      <td>2750</td>\n",
       "      <td>80</td>\n",
       "      <td>7.5</td>\n",
       "      <td>80</td>\n",
       "      <td>8.6</td>\n",
       "      <td>80</td>\n",
       "      <td>15.0</td>\n",
       "      <td>80</td>\n",
       "      <td>...</td>\n",
       "      <td>178</td>\n",
       "      <td>80</td>\n",
       "      <td>12.0</td>\n",
       "      <td>80</td>\n",
       "      <td>43</td>\n",
       "      <td>80</td>\n",
       "      <td>3'55\"</td>\n",
       "      <td>80</td>\n",
       "      <td>3'50\"</td>\n",
       "      <td>80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>3680</td>\n",
       "      <td>78</td>\n",
       "      <td>2650</td>\n",
       "      <td>78</td>\n",
       "      <td>7.7</td>\n",
       "      <td>78</td>\n",
       "      <td>8.8</td>\n",
       "      <td>78</td>\n",
       "      <td>13.6</td>\n",
       "      <td>78</td>\n",
       "      <td>...</td>\n",
       "      <td>175</td>\n",
       "      <td>78</td>\n",
       "      <td>NaN</td>\n",
       "      <td>78</td>\n",
       "      <td>41</td>\n",
       "      <td>78</td>\n",
       "      <td>4'00\"</td>\n",
       "      <td>78</td>\n",
       "      <td>3'55\"</td>\n",
       "      <td>78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>3560</td>\n",
       "      <td>76</td>\n",
       "      <td>2550</td>\n",
       "      <td>76</td>\n",
       "      <td>7.9</td>\n",
       "      <td>76</td>\n",
       "      <td>9.0</td>\n",
       "      <td>76</td>\n",
       "      <td>12.2</td>\n",
       "      <td>76</td>\n",
       "      <td>...</td>\n",
       "      <td>172</td>\n",
       "      <td>76</td>\n",
       "      <td>11.0</td>\n",
       "      <td>76</td>\n",
       "      <td>39</td>\n",
       "      <td>76</td>\n",
       "      <td>4'05\"</td>\n",
       "      <td>76</td>\n",
       "      <td>4'00\"</td>\n",
       "      <td>76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>3440</td>\n",
       "      <td>74</td>\n",
       "      <td>2450</td>\n",
       "      <td>74</td>\n",
       "      <td>8.1</td>\n",
       "      <td>74</td>\n",
       "      <td>9.2</td>\n",
       "      <td>74</td>\n",
       "      <td>10.8</td>\n",
       "      <td>74</td>\n",
       "      <td>...</td>\n",
       "      <td>169</td>\n",
       "      <td>74</td>\n",
       "      <td>NaN</td>\n",
       "      <td>74</td>\n",
       "      <td>37</td>\n",
       "      <td>74</td>\n",
       "      <td>4'10\"</td>\n",
       "      <td>74</td>\n",
       "      <td>4'05\"</td>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>3320</td>\n",
       "      <td>72</td>\n",
       "      <td>2350</td>\n",
       "      <td>72</td>\n",
       "      <td>8.3</td>\n",
       "      <td>72</td>\n",
       "      <td>9.4</td>\n",
       "      <td>72</td>\n",
       "      <td>9.4</td>\n",
       "      <td>72</td>\n",
       "      <td>...</td>\n",
       "      <td>166</td>\n",
       "      <td>72</td>\n",
       "      <td>10.0</td>\n",
       "      <td>72</td>\n",
       "      <td>35</td>\n",
       "      <td>72</td>\n",
       "      <td>4'15\"</td>\n",
       "      <td>72</td>\n",
       "      <td>4'10\"</td>\n",
       "      <td>72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>3200</td>\n",
       "      <td>70</td>\n",
       "      <td>2250</td>\n",
       "      <td>70</td>\n",
       "      <td>8.5</td>\n",
       "      <td>70</td>\n",
       "      <td>9.6</td>\n",
       "      <td>70</td>\n",
       "      <td>8.0</td>\n",
       "      <td>70</td>\n",
       "      <td>...</td>\n",
       "      <td>163</td>\n",
       "      <td>70</td>\n",
       "      <td>NaN</td>\n",
       "      <td>70</td>\n",
       "      <td>33</td>\n",
       "      <td>70</td>\n",
       "      <td>4'20\"</td>\n",
       "      <td>70</td>\n",
       "      <td>4'15\"</td>\n",
       "      <td>70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>3080</td>\n",
       "      <td>68</td>\n",
       "      <td>2150</td>\n",
       "      <td>68</td>\n",
       "      <td>8.7</td>\n",
       "      <td>68</td>\n",
       "      <td>9.8</td>\n",
       "      <td>68</td>\n",
       "      <td>6.6</td>\n",
       "      <td>68</td>\n",
       "      <td>...</td>\n",
       "      <td>160</td>\n",
       "      <td>68</td>\n",
       "      <td>9.0</td>\n",
       "      <td>68</td>\n",
       "      <td>31</td>\n",
       "      <td>68</td>\n",
       "      <td>4'25\"</td>\n",
       "      <td>68</td>\n",
       "      <td>4'20\"</td>\n",
       "      <td>68</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>2960</td>\n",
       "      <td>66</td>\n",
       "      <td>2050</td>\n",
       "      <td>66</td>\n",
       "      <td>8.9</td>\n",
       "      <td>66</td>\n",
       "      <td>10.0</td>\n",
       "      <td>66</td>\n",
       "      <td>5.2</td>\n",
       "      <td>66</td>\n",
       "      <td>...</td>\n",
       "      <td>157</td>\n",
       "      <td>66</td>\n",
       "      <td>NaN</td>\n",
       "      <td>66</td>\n",
       "      <td>29</td>\n",
       "      <td>66</td>\n",
       "      <td>4'30\"</td>\n",
       "      <td>66</td>\n",
       "      <td>4'25\"</td>\n",
       "      <td>66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>2840</td>\n",
       "      <td>64</td>\n",
       "      <td>1950</td>\n",
       "      <td>64</td>\n",
       "      <td>9.1</td>\n",
       "      <td>64</td>\n",
       "      <td>10.2</td>\n",
       "      <td>64</td>\n",
       "      <td>3.8</td>\n",
       "      <td>64</td>\n",
       "      <td>...</td>\n",
       "      <td>154</td>\n",
       "      <td>64</td>\n",
       "      <td>8.0</td>\n",
       "      <td>64</td>\n",
       "      <td>27</td>\n",
       "      <td>64</td>\n",
       "      <td>4'35\"</td>\n",
       "      <td>64</td>\n",
       "      <td>4'30\"</td>\n",
       "      <td>64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>2720</td>\n",
       "      <td>62</td>\n",
       "      <td>1850</td>\n",
       "      <td>62</td>\n",
       "      <td>9.3</td>\n",
       "      <td>62</td>\n",
       "      <td>10.4</td>\n",
       "      <td>62</td>\n",
       "      <td>2.4</td>\n",
       "      <td>62</td>\n",
       "      <td>...</td>\n",
       "      <td>151</td>\n",
       "      <td>62</td>\n",
       "      <td>NaN</td>\n",
       "      <td>62</td>\n",
       "      <td>25</td>\n",
       "      <td>62</td>\n",
       "      <td>4'40\"</td>\n",
       "      <td>62</td>\n",
       "      <td>4'35\"</td>\n",
       "      <td>62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>2600</td>\n",
       "      <td>60</td>\n",
       "      <td>1750</td>\n",
       "      <td>60</td>\n",
       "      <td>9.5</td>\n",
       "      <td>60</td>\n",
       "      <td>10.6</td>\n",
       "      <td>60</td>\n",
       "      <td>1.0</td>\n",
       "      <td>60</td>\n",
       "      <td>...</td>\n",
       "      <td>148</td>\n",
       "      <td>60</td>\n",
       "      <td>7.0</td>\n",
       "      <td>60</td>\n",
       "      <td>23</td>\n",
       "      <td>60</td>\n",
       "      <td>4'45\"</td>\n",
       "      <td>60</td>\n",
       "      <td>4'40\"</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>2470</td>\n",
       "      <td>50</td>\n",
       "      <td>1710</td>\n",
       "      <td>50</td>\n",
       "      <td>9.7</td>\n",
       "      <td>50</td>\n",
       "      <td>10.8</td>\n",
       "      <td>50</td>\n",
       "      <td>0.0</td>\n",
       "      <td>50</td>\n",
       "      <td>...</td>\n",
       "      <td>143</td>\n",
       "      <td>50</td>\n",
       "      <td>6.0</td>\n",
       "      <td>50</td>\n",
       "      <td>21</td>\n",
       "      <td>50</td>\n",
       "      <td>5'05\"</td>\n",
       "      <td>50</td>\n",
       "      <td>4'50\"</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>2340</td>\n",
       "      <td>40</td>\n",
       "      <td>1670</td>\n",
       "      <td>40</td>\n",
       "      <td>9.9</td>\n",
       "      <td>40</td>\n",
       "      <td>11.0</td>\n",
       "      <td>40</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>40</td>\n",
       "      <td>...</td>\n",
       "      <td>138</td>\n",
       "      <td>40</td>\n",
       "      <td>5.0</td>\n",
       "      <td>40</td>\n",
       "      <td>19</td>\n",
       "      <td>40</td>\n",
       "      <td>5'25\"</td>\n",
       "      <td>40</td>\n",
       "      <td>5'00\"</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>2210</td>\n",
       "      <td>30</td>\n",
       "      <td>1630</td>\n",
       "      <td>30</td>\n",
       "      <td>10.1</td>\n",
       "      <td>30</td>\n",
       "      <td>11.2</td>\n",
       "      <td>30</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>30</td>\n",
       "      <td>...</td>\n",
       "      <td>133</td>\n",
       "      <td>30</td>\n",
       "      <td>4.0</td>\n",
       "      <td>30</td>\n",
       "      <td>17</td>\n",
       "      <td>30</td>\n",
       "      <td>5'45\"</td>\n",
       "      <td>30</td>\n",
       "      <td>5'10\"</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>2080</td>\n",
       "      <td>20</td>\n",
       "      <td>1590</td>\n",
       "      <td>20</td>\n",
       "      <td>10.3</td>\n",
       "      <td>20</td>\n",
       "      <td>11.4</td>\n",
       "      <td>20</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>20</td>\n",
       "      <td>...</td>\n",
       "      <td>128</td>\n",
       "      <td>20</td>\n",
       "      <td>3.0</td>\n",
       "      <td>20</td>\n",
       "      <td>15</td>\n",
       "      <td>20</td>\n",
       "      <td>6'05\"</td>\n",
       "      <td>20</td>\n",
       "      <td>5'20\"</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>1950</td>\n",
       "      <td>10</td>\n",
       "      <td>1550</td>\n",
       "      <td>10</td>\n",
       "      <td>10.5</td>\n",
       "      <td>10</td>\n",
       "      <td>11.6</td>\n",
       "      <td>10</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>10</td>\n",
       "      <td>...</td>\n",
       "      <td>123</td>\n",
       "      <td>10</td>\n",
       "      <td>2.0</td>\n",
       "      <td>10</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "      <td>6'25\"</td>\n",
       "      <td>10</td>\n",
       "      <td>5'30\"</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>20 rows × 24 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    男肺活量       女肺活量      男50米跑      女50米跑       男体前屈       ...  女跳远       \\\n",
       "      成绩   分数    成绩   分数    成绩   分数    成绩   分数    成绩   分数  ...   成绩   分数   \n",
       "0   4540  100  3150  100   7.1  100   7.8  100  23.6  100  ...  204  100   \n",
       "1   4420   95  3100   95   7.2   95   7.9   95  21.5   95  ...  198   95   \n",
       "2   4300   90  3050   90   7.3   90   8.0   90  19.4   90  ...  192   90   \n",
       "3   4050   85  2900   85   7.4   85   8.3   85  17.2   85  ...  185   85   \n",
       "4   3800   80  2750   80   7.5   80   8.6   80  15.0   80  ...  178   80   \n",
       "5   3680   78  2650   78   7.7   78   8.8   78  13.6   78  ...  175   78   \n",
       "6   3560   76  2550   76   7.9   76   9.0   76  12.2   76  ...  172   76   \n",
       "7   3440   74  2450   74   8.1   74   9.2   74  10.8   74  ...  169   74   \n",
       "8   3320   72  2350   72   8.3   72   9.4   72   9.4   72  ...  166   72   \n",
       "9   3200   70  2250   70   8.5   70   9.6   70   8.0   70  ...  163   70   \n",
       "10  3080   68  2150   68   8.7   68   9.8   68   6.6   68  ...  160   68   \n",
       "11  2960   66  2050   66   8.9   66  10.0   66   5.2   66  ...  157   66   \n",
       "12  2840   64  1950   64   9.1   64  10.2   64   3.8   64  ...  154   64   \n",
       "13  2720   62  1850   62   9.3   62  10.4   62   2.4   62  ...  151   62   \n",
       "14  2600   60  1750   60   9.5   60  10.6   60   1.0   60  ...  148   60   \n",
       "15  2470   50  1710   50   9.7   50  10.8   50   0.0   50  ...  143   50   \n",
       "16  2340   40  1670   40   9.9   40  11.0   40  -1.0   40  ...  138   40   \n",
       "17  2210   30  1630   30  10.1   30  11.2   30  -2.0   30  ...  133   30   \n",
       "18  2080   20  1590   20  10.3   20  11.4   20  -3.0   20  ...  128   20   \n",
       "19  1950   10  1550   10  10.5   10  11.6   10  -4.0   10  ...  123   10   \n",
       "\n",
       "     男引体      女仰卧      男1000米跑      女800米跑       \n",
       "      成绩   分数  成绩   分数      成绩   分数     成绩   分数  \n",
       "0   16.0  100  53  100   3'30\"  100  3'24\"  100  \n",
       "1   15.0   95  51   95   3'35\"   95  3'30\"   95  \n",
       "2   14.0   90  49   90   3'40\"   90  3'36\"   90  \n",
       "3   13.0   85  46   85   3'47\"   85  3'43\"   85  \n",
       "4   12.0   80  43   80   3'55\"   80  3'50\"   80  \n",
       "5    NaN   78  41   78   4'00\"   78  3'55\"   78  \n",
       "6   11.0   76  39   76   4'05\"   76  4'00\"   76  \n",
       "7    NaN   74  37   74   4'10\"   74  4'05\"   74  \n",
       "8   10.0   72  35   72   4'15\"   72  4'10\"   72  \n",
       "9    NaN   70  33   70   4'20\"   70  4'15\"   70  \n",
       "10   9.0   68  31   68   4'25\"   68  4'20\"   68  \n",
       "11   NaN   66  29   66   4'30\"   66  4'25\"   66  \n",
       "12   8.0   64  27   64   4'35\"   64  4'30\"   64  \n",
       "13   NaN   62  25   62   4'40\"   62  4'35\"   62  \n",
       "14   7.0   60  23   60   4'45\"   60  4'40\"   60  \n",
       "15   6.0   50  21   50   5'05\"   50  4'50\"   50  \n",
       "16   5.0   40  19   40   5'25\"   40  5'00\"   40  \n",
       "17   4.0   30  17   30   5'45\"   30  5'10\"   30  \n",
       "18   3.0   20  15   20   6'05\"   20  5'20\"   20  \n",
       "19   2.0   10  13   10   6'25\"   10  5'30\"   10  \n",
       "\n",
       "[20 rows x 24 columns]"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rating"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "cb07c728",
   "metadata": {},
   "outputs": [],
   "source": [
    "rating = pd.read_excel('./体侧成绩评分表.xls',header= [0,1])  #  评分表加载 header=[0,1]表示多层列索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "1b32e95b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据类型转换\n",
    "def conbert(x):\n",
    "    if isinstance(x,str):\n",
    "        score = x.split(\"'\")\n",
    "        return int(score[0])+int(score[1])/100\n",
    "    else:\n",
    "        return x\n",
    "sports1['男1000米跑'] = sports1['男1000米跑'].map(conbert)\n",
    "sports2['女800米跑'] = sports2['女800米跑'].map(conbert)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "5091c3ff",
   "metadata": {},
   "outputs": [],
   "source": [
    "def convert(x):\n",
    "    if isinstance(x,str):\n",
    "        score2 = x.split(\"'\")\n",
    "        score1=score2[1].split('\"')\n",
    "        return int(score2[0])+ int(score1[0])/100\n",
    "    else:\n",
    "        return x\n",
    "rating['女800米跑','成绩'] = rating['女800米跑','成绩'].map(convert)\n",
    "rating['男1000米跑','成绩']  = rating['男1000米跑','成绩'].map(convert)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "3731cc36",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "男肺活量     成绩    float64\n",
       "         分数    float64\n",
       "女肺活量     成绩    float64\n",
       "         分数    float64\n",
       "男50米跑    成绩    float64\n",
       "         分数    float64\n",
       "女50米跑    成绩    float64\n",
       "         分数    float64\n",
       "男体前屈     成绩    float64\n",
       "         分数    float64\n",
       "女体前屈     成绩    float64\n",
       "         分数    float64\n",
       "男跳远      成绩    float64\n",
       "         分数    float64\n",
       "女跳远      成绩    float64\n",
       "         分数    float64\n",
       "男引体      成绩    float64\n",
       "         分数    float64\n",
       "女仰卧      成绩    float64\n",
       "         分数    float64\n",
       "男1000米跑  成绩    float64\n",
       "         分数    float64\n",
       "女800米跑   成绩    float64\n",
       "         分数    float64\n",
       "dtype: object"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  转换float64\n",
    "rating1 = rating.astype('float64')\n",
    "rating1.dtypes"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d763a6a4",
   "metadata": {},
   "source": [
    "### 对体测成绩进行分数转换，跑步类（越小越好）；跳远、体前屈（越大越好）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "e148fdbf",
   "metadata": {},
   "outputs": [],
   "source": [
    "cols = ['男1000米跑','男50米跑']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "681296d8",
   "metadata": {},
   "outputs": [],
   "source": [
    "for col in cols:    # 对列进行循环\n",
    "    def convert(x):\n",
    "        if x == 0:\n",
    "            return 0     # 没有参加测试\n",
    "        for i in range(rating[col].shape[0]):  #对评分表中 指定DataFrame进行循环\n",
    "            if x <= rating[col]['成绩'][i]:\n",
    "                return rating[col]['分数'][i]\n",
    "        return 0 \n",
    "    sports1[col+'分数'] = sports1[col].map(convert)\n",
    "    sports1.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "079f4615",
   "metadata": {},
   "outputs": [],
   "source": [
    "cols = ['男跳远', '男体前屈', '男引体', '男肺活量']\n",
    "\n",
    "for col in cols:    # 对列进行循环\n",
    "    def convert(x):\n",
    "        if x == 0:\n",
    "            return 0     # 没有参加测试\n",
    "        for i in range(rating[col].shape[0]):  #对评分表中 指定DataFrame进行循环\n",
    "            if x >= rating[col]['成绩'][i]:\n",
    "                return rating[col]['分数'][i]\n",
    "        return 0 \n",
    "    sports1[col+'分数'] = sports1[col].map(convert)\n",
    "    sports1.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "94aa954f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>班级</th>\n",
       "      <th>性别</th>\n",
       "      <th>男1000米跑</th>\n",
       "      <th>男50米跑</th>\n",
       "      <th>男跳远</th>\n",
       "      <th>男体前屈</th>\n",
       "      <th>男引体</th>\n",
       "      <th>男肺活量</th>\n",
       "      <th>身高</th>\n",
       "      <th>体重</th>\n",
       "      <th>BMI</th>\n",
       "      <th>男1000米跑分数</th>\n",
       "      <th>男50米跑分数</th>\n",
       "      <th>男跳远分数</th>\n",
       "      <th>男体前屈分数</th>\n",
       "      <th>男引体分数</th>\n",
       "      <th>男肺活量分数</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>男</td>\n",
       "      <td>4.13</td>\n",
       "      <td>8.88</td>\n",
       "      <td>195.0</td>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
       "      <td>2785</td>\n",
       "      <td>170.0</td>\n",
       "      <td>72.6</td>\n",
       "      <td>0</td>\n",
       "      <td>72</td>\n",
       "      <td>66</td>\n",
       "      <td>60</td>\n",
       "      <td>74</td>\n",
       "      <td>0</td>\n",
       "      <td>62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>男</td>\n",
       "      <td>4.16</td>\n",
       "      <td>7.70</td>\n",
       "      <td>225.0</td>\n",
       "      <td>11</td>\n",
       "      <td>7</td>\n",
       "      <td>3133</td>\n",
       "      <td>174.0</td>\n",
       "      <td>52.7</td>\n",
       "      <td>0</td>\n",
       "      <td>70</td>\n",
       "      <td>78</td>\n",
       "      <td>74</td>\n",
       "      <td>74</td>\n",
       "      <td>60</td>\n",
       "      <td>68</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>男</td>\n",
       "      <td>4.09</td>\n",
       "      <td>8.45</td>\n",
       "      <td>218.0</td>\n",
       "      <td>14</td>\n",
       "      <td>1</td>\n",
       "      <td>3901</td>\n",
       "      <td>169.0</td>\n",
       "      <td>46.5</td>\n",
       "      <td>0</td>\n",
       "      <td>74</td>\n",
       "      <td>70</td>\n",
       "      <td>70</td>\n",
       "      <td>78</td>\n",
       "      <td>0</td>\n",
       "      <td>80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>男</td>\n",
       "      <td>4.21</td>\n",
       "      <td>8.05</td>\n",
       "      <td>206.0</td>\n",
       "      <td>13</td>\n",
       "      <td>1</td>\n",
       "      <td>4946</td>\n",
       "      <td>183.0</td>\n",
       "      <td>79.7</td>\n",
       "      <td>0</td>\n",
       "      <td>68</td>\n",
       "      <td>74</td>\n",
       "      <td>64</td>\n",
       "      <td>76</td>\n",
       "      <td>0</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>男</td>\n",
       "      <td>3.44</td>\n",
       "      <td>7.52</td>\n",
       "      <td>210.0</td>\n",
       "      <td>13</td>\n",
       "      <td>9</td>\n",
       "      <td>3538</td>\n",
       "      <td>171.0</td>\n",
       "      <td>54.7</td>\n",
       "      <td>0</td>\n",
       "      <td>85</td>\n",
       "      <td>78</td>\n",
       "      <td>66</td>\n",
       "      <td>76</td>\n",
       "      <td>68</td>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>472</th>\n",
       "      <td>17</td>\n",
       "      <td>男</td>\n",
       "      <td>4.23</td>\n",
       "      <td>8.27</td>\n",
       "      <td>208.0</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>4647</td>\n",
       "      <td>176.0</td>\n",
       "      <td>69.5</td>\n",
       "      <td>0</td>\n",
       "      <td>68</td>\n",
       "      <td>72</td>\n",
       "      <td>66</td>\n",
       "      <td>72</td>\n",
       "      <td>0</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>473</th>\n",
       "      <td>17</td>\n",
       "      <td>男</td>\n",
       "      <td>5.19</td>\n",
       "      <td>9.55</td>\n",
       "      <td>210.0</td>\n",
       "      <td>15</td>\n",
       "      <td>6</td>\n",
       "      <td>7042</td>\n",
       "      <td>177.0</td>\n",
       "      <td>76.0</td>\n",
       "      <td>0</td>\n",
       "      <td>40</td>\n",
       "      <td>50</td>\n",
       "      <td>66</td>\n",
       "      <td>80</td>\n",
       "      <td>50</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>474</th>\n",
       "      <td>17</td>\n",
       "      <td>男</td>\n",
       "      <td>3.25</td>\n",
       "      <td>7.50</td>\n",
       "      <td>252.0</td>\n",
       "      <td>13</td>\n",
       "      <td>13</td>\n",
       "      <td>5755</td>\n",
       "      <td>181.0</td>\n",
       "      <td>65.0</td>\n",
       "      <td>0</td>\n",
       "      <td>100</td>\n",
       "      <td>80</td>\n",
       "      <td>90</td>\n",
       "      <td>76</td>\n",
       "      <td>85</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>475</th>\n",
       "      <td>17</td>\n",
       "      <td>男</td>\n",
       "      <td>4.39</td>\n",
       "      <td>7.81</td>\n",
       "      <td>208.0</td>\n",
       "      <td>14</td>\n",
       "      <td>11</td>\n",
       "      <td>5688</td>\n",
       "      <td>172.0</td>\n",
       "      <td>51.7</td>\n",
       "      <td>0</td>\n",
       "      <td>62</td>\n",
       "      <td>76</td>\n",
       "      <td>66</td>\n",
       "      <td>78</td>\n",
       "      <td>76</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>476</th>\n",
       "      <td>17</td>\n",
       "      <td>男</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>477 rows × 17 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     班级 性别  男1000米跑  男50米跑    男跳远  男体前屈  男引体  男肺活量     身高    体重  BMI  \\\n",
       "0     1  男     4.13   8.88  195.0    12    1  2785  170.0  72.6    0   \n",
       "1     1  男     4.16   7.70  225.0    11    7  3133  174.0  52.7    0   \n",
       "2     1  男     4.09   8.45  218.0    14    1  3901  169.0  46.5    0   \n",
       "3     1  男     4.21   8.05  206.0    13    1  4946  183.0  79.7    0   \n",
       "4     1  男     3.44   7.52  210.0    13    9  3538  171.0  54.7    0   \n",
       "..   .. ..      ...    ...    ...   ...  ...   ...    ...   ...  ...   \n",
       "472  17  男     4.23   8.27  208.0    10    0  4647  176.0  69.5    0   \n",
       "473  17  男     5.19   9.55  210.0    15    6  7042  177.0  76.0    0   \n",
       "474  17  男     3.25   7.50  252.0    13   13  5755  181.0  65.0    0   \n",
       "475  17  男     4.39   7.81  208.0    14   11  5688  172.0  51.7    0   \n",
       "476  17  男     0.00   0.00    0.0     0    0     0    0.0   0.0    0   \n",
       "\n",
       "     男1000米跑分数  男50米跑分数  男跳远分数  男体前屈分数  男引体分数  男肺活量分数  \n",
       "0           72       66     60      74      0      62  \n",
       "1           70       78     74      74     60      68  \n",
       "2           74       70     70      78      0      80  \n",
       "3           68       74     64      76      0     100  \n",
       "4           85       78     66      76     68      74  \n",
       "..         ...      ...    ...     ...    ...     ...  \n",
       "472         68       72     66      72      0     100  \n",
       "473         40       50     66      80     50     100  \n",
       "474        100       80     90      76     85     100  \n",
       "475         62       76     66      78     76     100  \n",
       "476          0        0      0       0      0       0  \n",
       "\n",
       "[477 rows x 17 columns]"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sports1"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3447fa84",
   "metadata": {},
   "source": [
    "### 列索引重排"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "462e1d96",
   "metadata": {},
   "outputs": [],
   "source": [
    "cols = ['班级', '性别', '男1000米跑','男1000米跑分数',  '男50米跑','男50米跑分数', \n",
    "        '男跳远','男跳远分数', '男体前屈','男体前屈分数', '男引体','男引体分数', \n",
    "        '男肺活量', '男肺活量分数','身高',\n",
    "       '体重', 'BMI']\n",
    "sports1 = sports1[cols]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "2d4962d0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>班级</th>\n",
       "      <th>性别</th>\n",
       "      <th>男1000米跑</th>\n",
       "      <th>男1000米跑分数</th>\n",
       "      <th>男50米跑</th>\n",
       "      <th>男50米跑分数</th>\n",
       "      <th>男跳远</th>\n",
       "      <th>男跳远分数</th>\n",
       "      <th>男体前屈</th>\n",
       "      <th>男体前屈分数</th>\n",
       "      <th>男引体</th>\n",
       "      <th>男引体分数</th>\n",
       "      <th>男肺活量</th>\n",
       "      <th>男肺活量分数</th>\n",
       "      <th>身高</th>\n",
       "      <th>体重</th>\n",
       "      <th>BMI</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>男</td>\n",
       "      <td>4.13</td>\n",
       "      <td>72</td>\n",
       "      <td>8.88</td>\n",
       "      <td>66</td>\n",
       "      <td>195.0</td>\n",
       "      <td>60</td>\n",
       "      <td>12</td>\n",
       "      <td>74</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2785</td>\n",
       "      <td>62</td>\n",
       "      <td>170.0</td>\n",
       "      <td>72.6</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>男</td>\n",
       "      <td>4.16</td>\n",
       "      <td>70</td>\n",
       "      <td>7.70</td>\n",
       "      <td>78</td>\n",
       "      <td>225.0</td>\n",
       "      <td>74</td>\n",
       "      <td>11</td>\n",
       "      <td>74</td>\n",
       "      <td>7</td>\n",
       "      <td>60</td>\n",
       "      <td>3133</td>\n",
       "      <td>68</td>\n",
       "      <td>174.0</td>\n",
       "      <td>52.7</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>男</td>\n",
       "      <td>4.09</td>\n",
       "      <td>74</td>\n",
       "      <td>8.45</td>\n",
       "      <td>70</td>\n",
       "      <td>218.0</td>\n",
       "      <td>70</td>\n",
       "      <td>14</td>\n",
       "      <td>78</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3901</td>\n",
       "      <td>80</td>\n",
       "      <td>169.0</td>\n",
       "      <td>46.5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>男</td>\n",
       "      <td>4.21</td>\n",
       "      <td>68</td>\n",
       "      <td>8.05</td>\n",
       "      <td>74</td>\n",
       "      <td>206.0</td>\n",
       "      <td>64</td>\n",
       "      <td>13</td>\n",
       "      <td>76</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4946</td>\n",
       "      <td>100</td>\n",
       "      <td>183.0</td>\n",
       "      <td>79.7</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>男</td>\n",
       "      <td>3.44</td>\n",
       "      <td>85</td>\n",
       "      <td>7.52</td>\n",
       "      <td>78</td>\n",
       "      <td>210.0</td>\n",
       "      <td>66</td>\n",
       "      <td>13</td>\n",
       "      <td>76</td>\n",
       "      <td>9</td>\n",
       "      <td>68</td>\n",
       "      <td>3538</td>\n",
       "      <td>74</td>\n",
       "      <td>171.0</td>\n",
       "      <td>54.7</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>472</th>\n",
       "      <td>17</td>\n",
       "      <td>男</td>\n",
       "      <td>4.23</td>\n",
       "      <td>68</td>\n",
       "      <td>8.27</td>\n",
       "      <td>72</td>\n",
       "      <td>208.0</td>\n",
       "      <td>66</td>\n",
       "      <td>10</td>\n",
       "      <td>72</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4647</td>\n",
       "      <td>100</td>\n",
       "      <td>176.0</td>\n",
       "      <td>69.5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>473</th>\n",
       "      <td>17</td>\n",
       "      <td>男</td>\n",
       "      <td>5.19</td>\n",
       "      <td>40</td>\n",
       "      <td>9.55</td>\n",
       "      <td>50</td>\n",
       "      <td>210.0</td>\n",
       "      <td>66</td>\n",
       "      <td>15</td>\n",
       "      <td>80</td>\n",
       "      <td>6</td>\n",
       "      <td>50</td>\n",
       "      <td>7042</td>\n",
       "      <td>100</td>\n",
       "      <td>177.0</td>\n",
       "      <td>76.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>474</th>\n",
       "      <td>17</td>\n",
       "      <td>男</td>\n",
       "      <td>3.25</td>\n",
       "      <td>100</td>\n",
       "      <td>7.50</td>\n",
       "      <td>80</td>\n",
       "      <td>252.0</td>\n",
       "      <td>90</td>\n",
       "      <td>13</td>\n",
       "      <td>76</td>\n",
       "      <td>13</td>\n",
       "      <td>85</td>\n",
       "      <td>5755</td>\n",
       "      <td>100</td>\n",
       "      <td>181.0</td>\n",
       "      <td>65.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>475</th>\n",
       "      <td>17</td>\n",
       "      <td>男</td>\n",
       "      <td>4.39</td>\n",
       "      <td>62</td>\n",
       "      <td>7.81</td>\n",
       "      <td>76</td>\n",
       "      <td>208.0</td>\n",
       "      <td>66</td>\n",
       "      <td>14</td>\n",
       "      <td>78</td>\n",
       "      <td>11</td>\n",
       "      <td>76</td>\n",
       "      <td>5688</td>\n",
       "      <td>100</td>\n",
       "      <td>172.0</td>\n",
       "      <td>51.7</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>476</th>\n",
       "      <td>17</td>\n",
       "      <td>男</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>477 rows × 17 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     班级 性别  男1000米跑  男1000米跑分数  男50米跑  男50米跑分数    男跳远  男跳远分数  男体前屈  男体前屈分数  \\\n",
       "0     1  男     4.13         72   8.88       66  195.0     60    12      74   \n",
       "1     1  男     4.16         70   7.70       78  225.0     74    11      74   \n",
       "2     1  男     4.09         74   8.45       70  218.0     70    14      78   \n",
       "3     1  男     4.21         68   8.05       74  206.0     64    13      76   \n",
       "4     1  男     3.44         85   7.52       78  210.0     66    13      76   \n",
       "..   .. ..      ...        ...    ...      ...    ...    ...   ...     ...   \n",
       "472  17  男     4.23         68   8.27       72  208.0     66    10      72   \n",
       "473  17  男     5.19         40   9.55       50  210.0     66    15      80   \n",
       "474  17  男     3.25        100   7.50       80  252.0     90    13      76   \n",
       "475  17  男     4.39         62   7.81       76  208.0     66    14      78   \n",
       "476  17  男     0.00          0   0.00        0    0.0      0     0       0   \n",
       "\n",
       "     男引体  男引体分数  男肺活量  男肺活量分数     身高    体重  BMI  \n",
       "0      1      0  2785      62  170.0  72.6    0  \n",
       "1      7     60  3133      68  174.0  52.7    0  \n",
       "2      1      0  3901      80  169.0  46.5    0  \n",
       "3      1      0  4946     100  183.0  79.7    0  \n",
       "4      9     68  3538      74  171.0  54.7    0  \n",
       "..   ...    ...   ...     ...    ...   ...  ...  \n",
       "472    0      0  4647     100  176.0  69.5    0  \n",
       "473    6     50  7042     100  177.0  76.0    0  \n",
       "474   13     85  5755     100  181.0  65.0    0  \n",
       "475   11     76  5688     100  172.0  51.7    0  \n",
       "476    0      0     0       0    0.0   0.0    0  \n",
       "\n",
       "[477 rows x 17 columns]"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sports1"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a20603f",
   "metadata": {},
   "source": [
    "### IBM分数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "375139ff",
   "metadata": {},
   "outputs": [],
   "source": [
    "a = (sports1['体重']/(sports1['身高']/100)**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "93e86c8f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>班级</th>\n",
       "      <th>性别</th>\n",
       "      <th>男1000米跑</th>\n",
       "      <th>男1000米跑分数</th>\n",
       "      <th>男50米跑</th>\n",
       "      <th>男50米跑分数</th>\n",
       "      <th>男跳远</th>\n",
       "      <th>男跳远分数</th>\n",
       "      <th>男体前屈</th>\n",
       "      <th>男体前屈分数</th>\n",
       "      <th>男引体</th>\n",
       "      <th>男引体分数</th>\n",
       "      <th>男肺活量</th>\n",
       "      <th>男肺活量分数</th>\n",
       "      <th>身高</th>\n",
       "      <th>体重</th>\n",
       "      <th>BMI</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>男</td>\n",
       "      <td>4.13</td>\n",
       "      <td>72</td>\n",
       "      <td>8.88</td>\n",
       "      <td>66</td>\n",
       "      <td>195.0</td>\n",
       "      <td>60</td>\n",
       "      <td>12</td>\n",
       "      <td>74</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2785</td>\n",
       "      <td>62</td>\n",
       "      <td>170.0</td>\n",
       "      <td>72.6</td>\n",
       "      <td>25.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>男</td>\n",
       "      <td>4.16</td>\n",
       "      <td>70</td>\n",
       "      <td>7.70</td>\n",
       "      <td>78</td>\n",
       "      <td>225.0</td>\n",
       "      <td>74</td>\n",
       "      <td>11</td>\n",
       "      <td>74</td>\n",
       "      <td>7</td>\n",
       "      <td>60</td>\n",
       "      <td>3133</td>\n",
       "      <td>68</td>\n",
       "      <td>174.0</td>\n",
       "      <td>52.7</td>\n",
       "      <td>17.41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>男</td>\n",
       "      <td>4.09</td>\n",
       "      <td>74</td>\n",
       "      <td>8.45</td>\n",
       "      <td>70</td>\n",
       "      <td>218.0</td>\n",
       "      <td>70</td>\n",
       "      <td>14</td>\n",
       "      <td>78</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3901</td>\n",
       "      <td>80</td>\n",
       "      <td>169.0</td>\n",
       "      <td>46.5</td>\n",
       "      <td>16.28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>男</td>\n",
       "      <td>4.21</td>\n",
       "      <td>68</td>\n",
       "      <td>8.05</td>\n",
       "      <td>74</td>\n",
       "      <td>206.0</td>\n",
       "      <td>64</td>\n",
       "      <td>13</td>\n",
       "      <td>76</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4946</td>\n",
       "      <td>100</td>\n",
       "      <td>183.0</td>\n",
       "      <td>79.7</td>\n",
       "      <td>23.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>男</td>\n",
       "      <td>3.44</td>\n",
       "      <td>85</td>\n",
       "      <td>7.52</td>\n",
       "      <td>78</td>\n",
       "      <td>210.0</td>\n",
       "      <td>66</td>\n",
       "      <td>13</td>\n",
       "      <td>76</td>\n",
       "      <td>9</td>\n",
       "      <td>68</td>\n",
       "      <td>3538</td>\n",
       "      <td>74</td>\n",
       "      <td>171.0</td>\n",
       "      <td>54.7</td>\n",
       "      <td>18.71</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>472</th>\n",
       "      <td>17</td>\n",
       "      <td>男</td>\n",
       "      <td>4.23</td>\n",
       "      <td>68</td>\n",
       "      <td>8.27</td>\n",
       "      <td>72</td>\n",
       "      <td>208.0</td>\n",
       "      <td>66</td>\n",
       "      <td>10</td>\n",
       "      <td>72</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4647</td>\n",
       "      <td>100</td>\n",
       "      <td>176.0</td>\n",
       "      <td>69.5</td>\n",
       "      <td>22.44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>473</th>\n",
       "      <td>17</td>\n",
       "      <td>男</td>\n",
       "      <td>5.19</td>\n",
       "      <td>40</td>\n",
       "      <td>9.55</td>\n",
       "      <td>50</td>\n",
       "      <td>210.0</td>\n",
       "      <td>66</td>\n",
       "      <td>15</td>\n",
       "      <td>80</td>\n",
       "      <td>6</td>\n",
       "      <td>50</td>\n",
       "      <td>7042</td>\n",
       "      <td>100</td>\n",
       "      <td>177.0</td>\n",
       "      <td>76.0</td>\n",
       "      <td>24.26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>474</th>\n",
       "      <td>17</td>\n",
       "      <td>男</td>\n",
       "      <td>3.25</td>\n",
       "      <td>100</td>\n",
       "      <td>7.50</td>\n",
       "      <td>80</td>\n",
       "      <td>252.0</td>\n",
       "      <td>90</td>\n",
       "      <td>13</td>\n",
       "      <td>76</td>\n",
       "      <td>13</td>\n",
       "      <td>85</td>\n",
       "      <td>5755</td>\n",
       "      <td>100</td>\n",
       "      <td>181.0</td>\n",
       "      <td>65.0</td>\n",
       "      <td>19.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>475</th>\n",
       "      <td>17</td>\n",
       "      <td>男</td>\n",
       "      <td>4.39</td>\n",
       "      <td>62</td>\n",
       "      <td>7.81</td>\n",
       "      <td>76</td>\n",
       "      <td>208.0</td>\n",
       "      <td>66</td>\n",
       "      <td>14</td>\n",
       "      <td>78</td>\n",
       "      <td>11</td>\n",
       "      <td>76</td>\n",
       "      <td>5688</td>\n",
       "      <td>100</td>\n",
       "      <td>172.0</td>\n",
       "      <td>51.7</td>\n",
       "      <td>17.48</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>476</th>\n",
       "      <td>17</td>\n",
       "      <td>男</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>477 rows × 17 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     班级 性别  男1000米跑  男1000米跑分数  男50米跑  男50米跑分数    男跳远  男跳远分数  男体前屈  男体前屈分数  \\\n",
       "0     1  男     4.13         72   8.88       66  195.0     60    12      74   \n",
       "1     1  男     4.16         70   7.70       78  225.0     74    11      74   \n",
       "2     1  男     4.09         74   8.45       70  218.0     70    14      78   \n",
       "3     1  男     4.21         68   8.05       74  206.0     64    13      76   \n",
       "4     1  男     3.44         85   7.52       78  210.0     66    13      76   \n",
       "..   .. ..      ...        ...    ...      ...    ...    ...   ...     ...   \n",
       "472  17  男     4.23         68   8.27       72  208.0     66    10      72   \n",
       "473  17  男     5.19         40   9.55       50  210.0     66    15      80   \n",
       "474  17  男     3.25        100   7.50       80  252.0     90    13      76   \n",
       "475  17  男     4.39         62   7.81       76  208.0     66    14      78   \n",
       "476  17  男     0.00          0   0.00        0    0.0      0     0       0   \n",
       "\n",
       "     男引体  男引体分数  男肺活量  男肺活量分数     身高    体重    BMI  \n",
       "0      1      0  2785      62  170.0  72.6  25.12  \n",
       "1      7     60  3133      68  174.0  52.7  17.41  \n",
       "2      1      0  3901      80  169.0  46.5  16.28  \n",
       "3      1      0  4946     100  183.0  79.7  23.80  \n",
       "4      9     68  3538      74  171.0  54.7  18.71  \n",
       "..   ...    ...   ...     ...    ...   ...    ...  \n",
       "472    0      0  4647     100  176.0  69.5  22.44  \n",
       "473    6     50  7042     100  177.0  76.0  24.26  \n",
       "474   13     85  5755     100  181.0  65.0  19.84  \n",
       "475   11     76  5688     100  172.0  51.7  17.48  \n",
       "476    0      0     0       0    0.0   0.0   0.00  \n",
       "\n",
       "[477 rows x 17 columns]"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sports1['BMI'] = a.fillna(0).round(2)\n",
    "sports1"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "164.988px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
